亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

對拋出異常這一塊比較模糊。

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號