为了账号安全,请及时绑定邮箱和手机立即绑定

对抛出异常这一块比较模糊。

public void divide(int one,int two) throws Exception{
	if(two==0)
		throw new Exception("两数相除,除数不能为0.");
	else
		System.out.println("两数相除结果为:"+one/two);
}
public void computer(){
	try{
		divide(5,0);
	}catch(Exception e){
		System.out.println(e.getMessage());
	}finally{
		System.out.println("Happy New Year!");
	}
}
public static void main(String[] args){
	BlueException be=new BlueException();
	be.computer();
}
这一段catch(Exception e){
System.out.println(e.getMessage());
}没有运行,怎么回事呢?


正在回答

3 回答

public class ExceptionTest {

public void divide(int one,int two) throws Exception{

   if(two==0)

       throw new Exception("两数相除,除数不能为0.");

   else

       System.out.println("两数相除结果为:"+one/two);

}

public void computer(){

   try{

       divide(5,0);

   }catch(Exception e){

       System.out.println("出现异常了"+e.getMessage());

   }finally{

       System.out.println("Happy New Year!");

   }

}

public static void main(String[] args){

   ExceptionTest be=new ExceptionTest();

   be.computer();

}


}

//运行结果:出现异常了 两数相除,除数不能为0. 

//       Happy New Year!

这是我用你的程序试了一下,你所说的部分运行了 ,我觉过程应该是divide函数抛出异常,然后computer()函数进行捕捉 打印e.getMessage()也就是异常信息,因为你是直接输出e.getMessage() 所以和你divide函数内写的异常信一样,你误以为是 

catch(Exception e){

System.out.println(e.getMessage());

}没有运行 


1 回复 有任何疑惑可以回复我~
#1

_Jack_Han_ 提问者

调试了一下果真是这样。你怎么能学这么好!
2016-02-05 回复 有任何疑惑可以回复我~
#2

_Jack_Han_ 提问者

这节课的知识点以及下节课的异常链,先定义一个可以抛出异常的方法,然后再以别的方法来调用前者,这种方法的应用意义是什么呢?
2016-02-05 回复 有任何疑惑可以回复我~
#3

怒放的生命012

我觉得 你理解的有点错误, e.getMessage()的确运行了,但是异常并不是Try语句捕捉的,而是Exception类捕捉的,通过throw抛出来,再传递给e.getmessage()打印出来
2016-06-01 回复 有任何疑惑可以回复我~
#4

_Jack_Han_ 提问者 回复 怒放的生命012

thanks
2016-07-06 回复 有任何疑惑可以回复我~
查看1条回复

 System.out.println("出现异常了"+e.getMessage()); 这句代码中e.getMessage()是啥意思啊 没看懂

0 回复 有任何疑惑可以回复我~

至于意义我也不是理解的很透彻 我也是初学者 我觉得只能在以后的实际项目中具体理解了。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

对抛出异常这一块比较模糊。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信