try/catch 的解釋與用法
目錄
定義
try/catch 語句用於處理程式碼中可能出現的錯誤資訊。通常是程式設計師造成的編碼錯誤或錯別字,也可能是拼寫錯誤或語言中缺少的功能(可能由於瀏覽器差異)。
如果沒有try/catch 的話,就有可能出現異常導致程式崩潰,而try/catch 則可以保證程式的正常執行。
例如:當除數為0時,編譯不會報錯,如果沒有try/catch的話,程式直接崩潰。用try/catch的話,則可以讓程式執行下去,並且輸出為什麼出錯!
語法
try/catch 語句格式如下:
try {
//嘗試執行的程式碼塊
}
catch (異常型別1 異常的變數名1) {
//捕獲錯誤的程式碼塊1
}
...
catch (異常型別2 異常的變數名2) {
//捕獲錯誤的程式碼塊2
}
finally {
//最終執行的程式碼塊
}
注意:
catch 和 finally 語句都是可選的,但你在使用 try 語句時必須至少使用一個。catch 可以有多個,當所有的 catch 都不滿足時,再執行 finally 裡的程式碼。
多重捕獲塊
一個 try 程式碼塊後面跟隨多個catch程式碼塊的情況就叫多重捕獲。
- 如果 try 程式碼塊中發生異常,異常被拋給第一個 catch 塊。
- 如果丟擲異常的資料型別與 ExceptionType1 匹配,它在這裡就會被捕獲。
- 如果不匹配,它會被傳遞給第二個 catch 塊。
- 如此,直到異常被捕獲或者通過所有的 catch 塊。
該例項展示了怎麼使用多重try/catch。
try {
file = new FileInputStream(fileName);
x = (byte) file.read();
}catch(IOException i) {
i.printStackTrace();
return -1;
}catch(FileNotFoundException f) {
f.printStackTrace();
return -1;
}
舉例
下面列出幾種常見情況:
1. NullPointerException 空指標異常
出現該異常的原因在於某個引用為null,但卻呼叫了它的某個方法,這時就會出現空指標異常。
try{
int a[] = null;
System.out.println(a[0]);
}catch(NullPointerException e){
System.out.println("Exception thrown :" + e);
}
2. ArrayIndexOutOfBoundsException 陣列下標越界異常
用非法索引訪問陣列時丟擲的異常。如果索引為負或大於等於陣列大小,則該索引為非法索引。
try{
int a[] = new int[2];
System.out.println("Access element three :" + a[3]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Exception thrown :" + e);
}
3. ArithmeticException 數學運算異常
當出現異常的運算條件時,丟擲此異常。例如,一個整數”除以零”時,丟擲此類的一個例項。
try{
int a = 10;
int b = 0;
int c = a/b;
System.out.println(c);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Exception thrown :" + e);
}
4. ClassCastException 型別轉換異常
當試圖將物件強制轉換為不是例項的子類時,丟擲該異常。
5. NumberFormatException 數字格式異常
當應用程式試圖將字串轉換成一種數值型別,但該字串不能轉換為適當格式時,丟擲該異常。
相關文章
- js中try和catch的用法JS
- try ,catch
- Laravel try catchLaravel
- 【轉】java中異常與try catch finally詳解Java
- java try(){}catch(){}自動資源釋放Java
- PHP 的異常處理之try和catch用法小結PHP
- try-catch-finally的使用
- Java try catch finally 總結Java
- JavaScript try catch finally 語句JavaScript
- JavaScript try/catch/finally 語句JavaScript
- Java中try()catch{}的使用方法Java
- (十四).try-throw-catch機制
- c++中的try-catch及throwC++
- JavaScript 中 try...catch 的 10 個使用技巧JavaScript
- Java之try-catch和throws的區別Java
- IDEA 自動生成try,catch快捷鍵Idea
- JS 使用try catch捕獲異常JS
- Java之異常處理try{}catch(){}Java
- Will it finally: 關於 try/catch 的一些細節
- NodeJS 實戰系列:如何設計 try catchNodeJS
- try throw catch 語句檢測input值
- try-catch-finally,被你忽略掉的執行順序
- 異常-try...catch的方式處理異常1
- 異常-try...catch的方式處理異常2
- 解決程式碼中重複的捕獲 promise 錯誤的 try catch 語句Promise
- 關於php的try catch 使用的疑惑,希望高手指點PHP
- Sqlserver Try Catch時Catch捕獲到錯誤則重試一次的寫法SQLServer
- python-try-except:pass的用法Python
- JAVA的異常處理機制(一)——try...catch...finallyJava
- (轉)有return的情況下try catch finally的執行順
- 有return的情況下try catch finally的執行順序
- 在 SQL Server 中使用 Try Catch 處理異常SQLServer
- [Java基礎]try-catch-finally 和 return 的執行順序Java
- 無需寫try/catch,也能正常處理異常
- 返回Promise物件的函式,函式內部記得加try catch!Promise物件函式
- Swift4 異常處理Try_Catch的使用之初見Swift
- try..catch 不能捕獲的錯誤有哪些?注意事項又有哪些?
- 征服Android面試官路漫漫(二):OutOfMemoryError 可以被 try catch 嗎 ?Android面試Error