有返回值的方法抛出异常后还要返回一个值

WZ22HAO 2015-10-25 11:53:39
public static MatrixFile Add(MatrixFile a,MatrixFile b)
{
try
{
if(a.GetLine()!=b.GetLine()||a.GetRow()!=b.GetRow())
{
MyException1 e1=new MyException1();
throw e1;
}
else
{
MatrixFile result=new MatrixFile();
result.line=a.line;result.row=a.row;
for(int i=0;i<result.row;i++)
for(int j=0;j<result.line;j++)
{
result.data[i][j]=a.data[i][j]+b.data[i][j];
}
return result;
}
}
catch(MyException1 e1)
{
System.out.println(e1.getMessage());
e1.display();
}
return null;
}

如果不加最后的return null会报错的,我想问一下return null对这个代码有什么影响,如果不加的话可以用什么其他方法代替么
...全文
1065 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 WZ22HAO 的回复:
代码修改过了,在add方法中只抛出异常就好了
public static MatrixFile Add(MatrixFile a,MatrixFile b)throws MyException1
	{
		if(a.GetLine()!=b.GetLine()||a.GetRow()!=b.GetRow())
		{
			MyException1 e1=new MyException1();
			throw e1;
		}
		else
		{
			MatrixFile result=new MatrixFile();
			result.line=a.line;result.row=a.row;
			for(int i=0;i<result.row;i++)
				for(int j=0;j<result.line;j++)
				{
					result.data[i][j]=a.data[i][j]+b.data[i][j];
				}
			return result;
		}
	}
对于一个有返回值的方法 ,你需要有符合要求的返回值,其实你在方法声明时throws异常,也可以理解一种特殊的返回值(返回一个异常给调用者)
WZ22HAO 2015-10-26
  • 打赏
  • 举报
回复
代码修改过了,在add方法中只抛出异常就好了
public static MatrixFile Add(MatrixFile a,MatrixFile b)throws MyException1
	{
		if(a.GetLine()!=b.GetLine()||a.GetRow()!=b.GetRow())
		{
			MyException1 e1=new MyException1();
			throw e1;
		}
		else
		{
			MatrixFile result=new MatrixFile();
			result.line=a.line;result.row=a.row;
			for(int i=0;i<result.row;i++)
				for(int j=0;j<result.line;j++)
				{
					result.data[i][j]=a.data[i][j]+b.data[i][j];
				}
			return result;
		}
	}
  • 打赏
  • 举报
回复
因为你已经对异常进行了处理,方法要继续执行try语句块外的语句,需要返回值
dracularking 2015-10-26
  • 打赏
  • 举报
回复
返回在catch里
soton_dolphin 2015-10-26
  • 打赏
  • 举报
回复
public static MatrixFile Add(MatrixFile a,MatrixFile b)
    {
     MatrixFile result = null;
        try
        {
            if(a.GetLine()!=b.GetLine()||a.GetRow()!=b.GetRow())
            {
                MyException1 e1=new MyException1();
                throw e1;
            }
              MatrixFile result=new MatrixFile();
              result = new MatrixFile()
                result.line=a.line;result.row=a.row;
                for(int i=0;i<result.row;i++)
                    for(int j=0;j<result.line;j++)
                    {
                        result.data[i][j]=a.data[i][j]+b.data[i][j];
                    }
             // return result;
            }
        }
        catch(MyException1 e1)
        {
            System.out.println(e1.getMessage());
            e1.display();
           return null;
        }
       // return null;
        return result;
    }
soton_dolphin 2015-10-26
  • 打赏
  • 举报
回复
引用 6 楼 soton_dolphin 的回复:
try{} 里面不要返回任何值,正常的返回值要放在catch{}后面。 在catch{} 里面要返回一个特别的值表明有异常发生,或者再次抛出一个新的异常。
public static MatrixFile Add(MatrixFile a,MatrixFile b)
    {
        MatrixFile result = null
        try
        {
            if(a.GetLine()!=b.GetLine()||a.GetRow()!=b.GetRow())
            {
                MyException1 e1=new MyException1();
                throw e1;
            }
            else
            {
                // MatrixFile result=new MatrixFile();
               result = new MatrixFile()
                result.line=a.line;result.row=a.row;
                for(int i=0;i<result.row;i++)
                    for(int j=0;j<result.line;j++)
                    {
                        result.data[i][j]=a.data[i][j]+b.data[i][j];
                    }
                // return result;
            }
        }
        catch(MyException1 e1)
        {
            System.out.println(e1.getMessage());
            e1.display();
            return null;
        }
        // return null;
        return result;
    }
soton_dolphin 2015-10-26
  • 打赏
  • 举报
回复
try{} 里面不要返回任何值,正常的返回值要放在catch{}后面。 在catch{} 里面要返回一个特别的值表明有异常发生,或者再次抛出一个新的异常。
StoneHui_ 2015-10-26
  • 打赏
  • 举报
回复
根本不需要异常的呀

public static MatrixFile Add(MatrixFile a,MatrixFile b) {
    if(a.GetLine()!=b.GetLine()||a.GetRow()!=b.GetRow()) {
        return null;
    } else {
        MatrixFile result=new MatrixFile();
        result.line=a.line;result.row=a.row;
        for(int i=0;i<result.row;i++) {
            for(int j=0;j<result.line;j++) {
                result.data[i][j]=a.data[i][j]+b.data[i][j];
            }
        }
        return result;
    }
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧