java捕捉异常,结合finally如何才能捕捉两个异常?

public class ExceptionExam
{
public static void main(String[] args)
{
try{
int a,b;
double c;
b=0;

a=Integer.parseInt("33p");
//c=a/b;
//System.out.println(a+"/"+b+"="+c);

}
catch(NumberFormatException e){
System.out.println("格式错误");}

finally{

try{
c=a/b;
System.out.println(a+"/"+b+"="+c);}
catch (ArithmeticException e){

System.out.println("除数错误");}

}
}

}
怎么写才是对的?才能捕捉两个错误,就是在运行的时候会同时显示“格式错误”和“除数错误”?

如果格式错误还有必要做除法么,一般碰到异常程序就不会往下走了,也就是说捕捉到一个错误后程序就中断了
try.catch块中try是必须的,但是catch是可以写多个的
try{
}catch(NumberFormatException e){
}catch (ArithmeticException e1{}
你catch两次就行了追问

这样catch两次是可以的,但是最后运行的结果是只能输出一个,的确格式错误时没有必要输出了,但是我就是想用上finnlly让他可以把两句话都能够输出来。请问有方法么?

追答

int a=0, b=0;
double c;
try {
a = Integer.parseInt("33p");
} catch (NumberFormatException e) {
System.out.println("格式错误");
}
finally {
try {
c = a / b;
System.out.println(a + "/" + b + "=" + c);
} catch (ArithmeticException e) {
System.out.println("除数错误");
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-20
try.catch块中try是必须的,但是catch是可以写多个的
try{
}catch(NumberFormatException e){
}catch (ArithmeticException e1{}
你catch两次就行了
第2个回答  推荐于2016-11-22
可以采用下面结构。
try {
...
} catch (IOException e) {
} catch (MYException e) {
} catch (OTHERException e) {
} finally {
try {
} catch (Exception e) {
}
}

或者:
try {
} catch (Exception e) { //Exception是根,可以捕获所有异常
}
第3个回答  2012-04-20
顶一、三楼,话说三楼是复制的吧。
相似回答