try語句塊可以沒有catch if語句與trycatch有什么區(qū)別?何時該用trycatch?
if語句與trycatch有什么區(qū)別?何時該用trycatch?If else是分支語句。根據(jù)if(expression)表達式中返回值的true或false,可以判斷是執(zhí)行if之后的語句還是執(zhí)行el
if語句與trycatch有什么區(qū)別?何時該用trycatch?
If else是分支語句。根據(jù)if(expression)表達式中返回值的true或false,可以判斷是執(zhí)行if之后的語句還是執(zhí)行else之后的語句
try catch用于捕捉異常。當try{}中包含的語句發(fā)生異常時,我們會跳轉(zhuǎn)到catch(){}來處理異常信息
雖然Java運行時系統(tǒng)提供的默認異常處理程序?qū)τ谡{(diào)試非常有用,但是通常你要自己處理異常。這有兩個好處。首先,它允許你改正錯誤。其次,它防止程序自動終止。大多數(shù)用戶(至少可以這么說)在程序結(jié)束時和出現(xiàn)錯誤時打印堆棧跟蹤,這讓他們很惱火。幸運的是,這很容易避免。R要防止和處理運行時錯誤,只需將要監(jiān)視的代碼放入try塊。try塊旁邊是一個catch子句,它描述要捕獲的錯誤類型。完成這項任務(wù)很容易。下面的程序包含一個處理被零除產(chǎn)生的數(shù)據(jù)的程序。程序輸出如下:除以零。之后請注意,try塊中對println()的調(diào)用從未執(zhí)行過。一旦拋出異常,程序控制就從try塊轉(zhuǎn)移到catch塊。執(zhí)行從不從catch塊“返回”到try塊。因此,“這將不會被打印?!盧將不會顯示。一旦catch語句被執(zhí)行,程序控制將從整個try/catch機制的下一行繼續(xù)。 ry和它的catch語句構(gòu)成一個單元。catch子句的作用域僅限于try語句之前定義的語句。catch語句無法捕獲另一個try語句引發(fā)的異常(嵌套try語句除外)。 ry保護的R語句必須在大括號中聲明(也就是說,它們必須在塊中)。你不能單獨使用try。R構(gòu)造catch子句的目的是解決異常并繼續(xù)運行,就像沒有發(fā)生錯誤一樣。例如,在下面的程序中,F(xiàn)or循環(huán)的每次迭代都會產(chǎn)生兩個隨機整數(shù)。這兩個整數(shù)被除以,結(jié)果被用來除以12345。最后的結(jié)果存在于a中。如果除法操作導(dǎo)致被零除的錯誤,則將捕獲該錯誤,a的值設(shè)置為零,程序繼續(xù)運行。R顯示異常的描述。Throwable重載toString()方法(由object定義),因此它返回一個包含異常描述的字符串。通過在println()中向異常傳遞參數(shù),可以顯示異常的描述。例如,可以將上一個程序的catch塊重寫為原始程序中的版本。當此版本替換原始程序中的版本時,程序?qū)⒃跇藴蔎ava JDK解釋器下運行,并且每個被零除的錯誤都會顯示以下消息:盡管上下文中沒有特殊值,但顯示異常描述的能力在其他情況下很有價值—特別是在進行實驗時和調(diào)試異常。R
catch及try語句的作用是什么?
代碼示例:
/*try catch:自己處理異常
*try{
*可能的異常代碼
*}catch(異常類名ae){
*如果發(fā)生類型a的異常,請執(zhí)行代碼
*}。。。(可以有多個catch)
*finally{
*必須執(zhí)行的代碼(例如,釋放資源的代碼)
*}
*代碼執(zhí)行順序:
*1。try中的代碼從發(fā)生異常的行開始并中斷執(zhí)行
*2。在相應(yīng)的catch塊中執(zhí)行代碼
*3。在try-catch結(jié)構(gòu)之后繼續(xù)執(zhí)行代碼
*注意:
*1。如果catch中的異常類有子類和父類的關(guān)系,那么子類應(yīng)該在前面,父類應(yīng)該在后面
*2。如果結(jié)尾有return語句,則最終返回的結(jié)果必須以結(jié)尾的返回值為準
*3。如果在最后一條語句中有一個返回,那么未處理的異常將被吞并