太奇怪了,方法中明明定义了有返回值,加上返回值则报错?
class A
{
int aa(int a,int b) throws yc
{
throw new yc( "测试一下 ");
return a/b;
}
}
class B
{
public static void main(String args[])
{
A a=new A();
try
{
a.aa(1,1);
}
catch(yc e)
{
System.out.println(e.toString());
}
}
}
class yc extends Exception
{
yc(String str)
{
super(str);
}
}
好奇怪啊,我自己定义了一个异常类yc,之后A类中的aa方法中最后一行如果加上return a/b则报错,请问是为什么啊?如不加return a/b则
不会报错,但是我有定义aa函数的时候要求必须有返回值啊?
------解决方案--------------------在有throw的情况下可以无return语句的
------解决方案--------------------什么异常?
就是正常的情况下不会出现的情况
所以抛异常是要有条件的。
if(some condition){
throw Exception;
}
return value;
------解决方案-------------------- int aa(int a,int b) throws yc
{
throw new yc( "测试一下 ");
return a/b;
}
这里你手动引发异常了 导致return a/b永远都不可能被执行。。。。 错的应该是这里了
我新手 回答错了莫怪。。。
------解决方案--------------------joejoe1991() 他说的是正确的 给分吧
------解决方案--------------------可以尝试到一个新的技术社区回答www.nlld.net
------解决方案--------------------int aa(int a,int b) throws yc
{
throw new yc( "测试一下 ");
return a/b;
}
这里你手动引发异常了 导致return a/b永远都不可能被执行。。。。 错的应该是这里了
我新手 回答错了莫怪。。。
----------------------
正解!
------解决方案--------------------java中执行不到的代码是一种错误
------解决方案--------------------int aa(int a,int b) throws yc
{
throw new yc( "测试一下 ");
return a/b;
}
这里你手动引发异常了 导致return a/b永远都不可能被执行。。。。 错的应该是这里了
我新手 回答错了莫怪。。。
----------------------
正解!
----------------------------
这个好象不对把?
这根本不会引发异常,因为你编译就不能通过,
a/b 这里不能这样写。
你非要除的话必须先把a,b都转为整型类型:
return (return Integer.parseInt(a.toString()))/(return Integer.parseInt(b.toString()))
------解决方案--------------------int aa(int a,int b) throws yc
{
throw new yc( "测试一下 ");
return a/b;//由于上面throw了exception,所以这是不可达代码,编译不过的
}