2011-07-07 13:59
提问者采纳
如果你知道你写的某个函数有可能抛出异常,而你又不想在这个函数中对异常进行处理,只是想把它抛出去让调用这个函数的上级调用函数进行处理,那么有两种方式可供选择:
第一种方式:直接在函数头中throws SomeException,函数体中不需要try/catch。比如将最开始的例子中的testEx2改为下面的方式,那么testEx1就能捕捉到testEx2抛出的异常了。
boolean testEx2() throws Exception{
boolean ret = true;
int b=12;
int c;
for (int i=2;i>=-2;i--){
c=b/i;
System.out.println("i="+i);
}
return true;
}
第二种方式:使用try/catch,在catch中进行一定的处理之后(如果有必要的话)抛出某种异常。例如上面的testEx2改为下面的方式,testEx1也能捕获到它抛出的异常:
boolean testEx2() throws Exception{
boolean ret = true;
try{
int b=12;
int c;
for (int i=2;i>=-2;i--){
c=b/i;
System.out.println("i="+i);
}
return true;
}catch (Exception e){
System.out.println("testEx2, catch exception");
Throw e;
}
}
第三种方法:使用try/catch/finally,在catch中进行一定的处理之后(如果有必要的话)抛出某种异常。例如上面的testEx2改为下面的方式,testEx1也能捕获到它抛出的异常:
boolean testEx2() throws Exception{
boolean ret = true;
try{
int b=12;
int c;
for (int i=2;i>=-2;i--){
c=b/i;
System.out.println("i="+i);
throw new Exception("aaa");
}
return true;
}catch (java.lang.ArithmeticException e){
System.out.println("testEx2, catch exception");
ret = false;
throw new Exception("aaa");
}finally{
System.out.println("testEx2, finally; return value="+ret);
}
}
评论(2)
66
9
类似问题最新采纳
2013-11-25 21:08
原问题:
java抛出异常
在Java语言中很少有那种特性像异常这样被广泛的误解。
异常必须声明为方法签名的一部分,而且如果一个方法抛出某种异常,所有调用过次方法的代码要么需要声明抛出同样的异常,要么就需要放进去try块里面,而且调用方法中必须宝行捕抓并处理此类异常的代码。但是往往大部分程序员都不喜欢做这种麻烦而且繁琐、鼓噪无味的工作。。。
其实,异常绝对是Java里面的东西,正确的使用能使你的代码运行起来更可靠、和管理。不过也有例外的,例如像一些大型的工业控制应用,都会有使用一些自己的库,来杜绝异常的使用(当然在库里面他们肯定也是已经处理好了的),但这种情况比较少见。。。
具体的原理和概念则是,在Java里面,Excpetion和RunException都是继承了Throwable类,任何只要是Throwable类的实例,都是可以通过throw语句中返回,而这个动作,就会给异常处理块捕获了。。。。
我的建议还是你应该好好的去了解并学习一下这块,要有一个程序的关于异常系统的设计理念。
收起
异常必须声明为方法签名的一部分,而且如果一个方法抛出某种异常,所有调用过次方法的代码要么需要声明抛出同样的异常,要么就需要放进去try块里面,而且调用方法中必须宝行捕抓并处理此类异常的代码。但是往往大部分程序员都不喜欢做这种麻烦而且繁琐、鼓噪无味的工作。。。
其实,异常绝对是Java里面的东西,正确的使用能使你的代码运行起来更可靠、和管理。不过也有例外的,例如像一些大型的工业控制应用,都会有使用一些自己的库,来杜绝异常的使用(当然在库里面他们肯定也是已经处理好了的),但这种情况比较少见。。。
具体的原理和概念则是,在Java里面,Excpetion和RunException都是继承了Throwable类,任何只要是Throwable类的实例,都是可以通过throw语句中返回,而这个动作,就会给异常处理块捕获了。。。。
我的建议还是你应该好好的去了解并学习一下这块,要有一个程序的关于异常系统的设计理念。
huangjiding
四级
2011-07-07 14:17
Yoona_candy
三级
try{
}catch (java.lang.ArithmeticException e){
System.out.println("");
throw new Exception("");
}finally{
System.out.println("");
}
}catch (java.lang.ArithmeticException e){
System.out.println("");
throw new Exception("");
}finally{
System.out.println("");
}
评论
3
2