1. java異常 throw和try-catch的關系
throw是把當前方法中出現的異常拋出去,自己不處理,處理異常交給要調用它的方法;try-catch是成對出現的,意思是在try中捕獲的異常馬上交給catch去處理
2. JAVA的throw和throws怎麼用!
throw是語句拋出一個異常;語法:throw(異常對象);
(2)java異常throw擴展閱讀:
throw與throws的區別
1、throw用在方法體內,上面代碼顯示了,是直接在main方法體內
throws用在方法聲明後面,表示再拋出異常,由該方法的調用者來處理。這個看上面的代碼就理解了。
2、throw是具體向外拋異常的,拋出的是一個異常實例。
throws聲明了是哪種類型的異常,使它的調用者可以捕獲這個異常。
3、throw,如果執行了,那麼一定是拋出了某種異常了,安生throws表示可能出現,但不一定。
4、同時出現的時候,throws出現在函數頭、throw出現在函數體,兩種不會由函數去處理,真正的處理由函數的上層調用處理。
3. Java中throw是拋出異常對象,throws是拋出異常類,對嗎
不對。throw是拋出異常對象。throws是聲明異常。即當前方法可能會拋出的異常。throws不會拋出異常。這只是告訴你這個方法有可能出現異常
4. Java中throw和throws的區別
系統自動拋出的異常所有系統定義的編譯和運行異常都可以由系統自動拋出,稱為標准異常,並且Java強烈地要求應用程序進行完整的異常處理,給用戶友好的提示,或者修正後使程序繼續執行。語句拋出的異常用戶程序自定義的異常和應用程序特定的異常,必須藉助於throws和throw語句來定義拋出異常。throw是語句拋出一個異常。語法:throw(異常對象);throwe;throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)語法:[(修飾符)](返回值類型)(方法名)([參數列表])[throws(異常類)]{}publicvoiddoA(inta)throwsException1,Exception3{}舉例:throwsE1,E2,E3隻是告訴程序這個方法可能會拋出這些異常,方法的調用者可能要處理這些異常,而這些異常E1,E2,E3可能是該函數體產生的。throw則是明確了這個地方要拋出這個異常。如:voiddoA(inta)throwsException1,Exception3{try{}catch(Exception1e){throwe;}catch(Exception2e){System.out.println("出錯了!");}if(a!=b)thrownewException3("自定義異常");}代碼塊中可能會產生3個異常,(Exception1,Exception2,Exception3)。如果產生Exception1異常,則捕獲之後再拋出,由該方法的調用者去處理。如果產生Exception2異常,則該方法自己處理了(即System.out.println("出錯了!");)。所以該方法就不會再向外拋出Exception2異常了,voiddoA()throwsException1,Exception3裡面的Exception2也就不用寫了。而Exception3異常是該方法的某段邏輯出錯,程序員自己做了處理,在該段邏輯錯誤的情況下拋出異常Exception3,則該方法的調用者也要處理此異常。throw語句用在方法體內,表示拋出異常,由方法體內的語句處理。throws語句用在方法聲明後面,表示再拋出異常,由該方法的調用者來處理。throws主要是聲明這個方法會拋出這種類型的異常,使它的調用者知道要捕獲這個異常。throw是具體向外拋異常的動作,所以它是拋出一個異常實例。throws說明你有那個可能,傾向。throw的話,那就是你把那個傾向變成真實的了。同時:1、throws出現在方法函數頭;而throw出現在函數體。2、throws表示出現異常的一種可能性,並不一定會發生這些異常;throw則是拋出了異常,執行throw則一定拋出了某種異常。3、兩者都是消極處理異常的方式(這里的消極並不是說這種方式不好),只是拋出或者可能拋出異常,但是不會由函數去處理異常,真正的處理異常由函數的上層調用處理。
5. Java中throw和throws有什麼區別
當然,你需要明白異常在Java中式以一個對象來看待。
並且所有系統定義的編譯和運行異常都可以由系統自動拋出,稱為標准異常,但是一般情況下Java 強烈地要求應用程序進行完整的異常處理,給用戶友好的提示,或者修正後使程序繼續執行。
直接進入正題哈:
1.用戶程序自定義的異常和應用程序特定的異常,必須藉助於 throws 和 throw 語句來定義拋出異常。
1.1 throw是語句拋出一個異常。
語法:throw (異常對象);
throw e;
1.2 throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)
語法:[(修飾符)](返回值類型)(方法名)([參數列表])[throws(異常類)]{......}
public void doA(int a) throws Exception1,Exception3{......}
舉例:
throws E1,E2,E3隻是告訴程序這個方法可能會拋出這些異常,方法的調用者可能要處理這些異常,而這些異常E1,E2,E3可能是該函數體產生的。
throw則是明確了這個地方要拋出這個異常。
如: void doA(int a) throws IOException,{
try{
......
}catch(Exception1 e){
throw e;
}catch(Exception2 e){
System.out.println("出錯了!");
}
if(a!=b)
throw new Exception3("自定義異常");
}
代碼塊中可能會產生3個異常,(Exception1,Exception2,Exception3)。
如果產生Exception1異常,則捕獲之後再拋出,由該方法的調用者去處理。
如
果產生Exception2異常,則該方法自己處理了(即System.out.println("出錯了!");)。所以該方法就不會再向外拋出
Exception2異常了,void doA() throws Exception1,Exception3
裡面的Exception2也就不用寫了。
而Exception3異常是該方法的某段邏輯出錯,程序員自己做了處理,在該段邏輯錯誤的情況下拋出異常Exception3,則該方法的調用者也要處理此異常。
throw語句用在方法體內,表示拋出異常,由方法體內的語句處理。
throws語句用在方法聲明後面,表示再拋出異常,由該方法的調用者來處理。
throws主要是聲明這個方法會拋出這種類型的異常,使它的調用者知道要捕獲這個異常。
throw是具體向外拋異常的動作,所以它是拋出一個異常實例。
throws說明你有那個可能,傾向。
throw的話,那就是你把那個傾向變成真實的了。
同時:
1、throws出現在方法函數頭;而throw出現在函數體。
2、throws表示出現異常的一種可能性,並不一定會發生這些異常;throw則是拋出了異常,執行throw則一定拋出了某種異常。
3、兩者都是消極處理異常的方式(這里的消極並不是說這種方式不好),只是拋出或者可能拋出異常,但是不會由函數去處理異常,真正的處理異常由函數的上層調用處理。
6. java異常處理存在的意義是什麼
對於代碼執行過程中,產生的異常。如果不捕獲處理,程序代碼默認會拋給調用層,如果調用層也未對異常做處理,那麼這個異常會一直往外拋出去,有可能直接將這些信息展現給使用的用戶。使用的用戶看到這些信息根本無法理解出現了什麼錯誤,很有可能會誤以為系統崩潰。
在代碼中做異常處理,可以保證程序運行時,如果產生異常,可以將底層的異常信息捕獲到,轉換為用戶可以接受,或者能看懂的信息,比如說:當前處理有錯誤。等等這類用戶可以理解的信息,而不是程序開發的代碼底層信息。這樣使用的用戶可以根據提示重新操作。
Java代碼中,有些類型轉換、資料庫連接、文件讀取等等操作,異常發生時,不會導致系統崩潰,但有必要讓操作用戶按照正常流程來操作,通過異常處理來反饋給操作用戶。
以上,就是我自己在Java開發過程中,自己的理解和總結,如果有誤,還望多多諒解,多多包含。
7. java異常機制throw語句的作用
糾正下,異常機制中用到的是「throws」,不是「throw」。
」throws「的作用是不在本方法中進程異常處理,而是拋給調用此方法的類中進行處理。
解釋:throws後,那麼調用的方法,必須進行此調用方法類的異常捕獲,也可以繼續向上拋出,最後一直到main方法上,此時雖然進行異常上拋,但是如果出現錯誤,也是可以正常的輸入錯誤信息的。
8. Java中的throw Exception是什麼意思
這是拋出異常的意思,很多編程語言中都有這個東西
這是編程語言異常處理機制中的一部分,他代表:不在當前方法(記為方法A)處理此異常,而拋給調用當前方法的方法(記為方法B),讓他來處理,如果方法B中catch到此異常之後也不想處理,那麼在throw 到調用方法B的方法,由他來處理
只能簡單說這么多,具體應該系統學習下java的異常處理機制
孫衛琴老師的《面向對象編程》挺好的,可以參考。其中有一章是講異常處理機制。
9. java異常 throws與throw的用法
第一:throw最重要的用法,不是先捕獲再拋出,而是第一次拋出的時候,如
publicintdivide(inta,intb)throwsDivideZeroException{
if(b==0)
thrownewDivideZeroException("can'tdivide0");
returna/b;
}
然後:先捕獲再拋出,是這樣用的。
publicintdoSomeThing(intx,inty){
try{
inta=divide(x+y,x-y);
intb=divide(x-y,x+y);
returna*b;
}catch(DivideZeroExceptione){
thrownewRuntimeException("dosomethingerror",e);
}
}
而且也可以不拋出,在本級就處理了。
publicintdoSomeThing(intx,inty){
try{
inta=divide(x+y,x-y);
intb=divide(x-y,x+y);
}catch(DivideZeroExceptione){
Loggerlogger=Logger.getLogger(getClass());
logger.info("dosomethingerror",e);
return-1;
}
}
你問到:使用了throws的方法中即使沒有throw,也依然可以拋出異常啊
回答:那是因為拋出的異常不是你手動拋出的,而是來自於你調用的方法(其根源還是在這個方法中用throw拋出的,或者是這個方法調用的方法)。
10. Java的throw exception是啥意思
Java裡面處理異常一般有兩種方法,一種就是throw exception 拋出異常,就是這一段代碼出問題的時候自己不處理,交給調用這一段代碼的處理。第二種是用try catch處理,也就是出現問題的時候自己處理