在進行代碼編寫的時候我們其實是不能預料到所有的可能出現的結果的因爲實際使用的用戶他是不知道我們的實現邏輯的所以呢,他們的操作也是離奇的怪的,所以我們是不能控制用戶輸入怎樣的操作,及時是用戶輸入了錯誤的操作我們也要能進行友好的提示之類的東西這樣我們的代碼才能更加的健壯和可讀性更好一點,這就是我們編碼人追求的東西,簡單明瞭,易操作。今天我們使用try catch 結構來進行異常的捕獲和處理。
try{ } catch { }
其實不是他的最好看的樣子,其實他最美的樣子纔是:
try{ } catch { } finally{ }
這纔是他最美的時間。也是我們最常用的格式。要是你感覺你的代碼啃能在這個地方可能出問題那麼,你就可以使用try { }catch { }finally { }進行異常的捕獲然後在進行處理。其實他的執行書序也是很有規律的,我們只有在自己感覺會出現問題的代碼塊中進行try { } catch { },這樣呢,也就是說只有我們的代碼在出現異常的時候纔會去執行catch { }塊裏的代碼,要是我們的代碼沒有異常呢,那是最號的事情,那就是我們的代碼henOK啦,但是呢要注意finally{ }模塊裏的所有情況下都是執行的哦,除了幾個很極端的問題。下面我們看一下這個結構的執行順序,上代碼:
/**
* Created by luyangli on 15-10-1.
*/
public class TryCatchTest {
public static void main(String[] args) {
TryCatCh tryCatCh = new TryCatCh();
tryCatCh.tryCatchTestOne();
tryCatCh.tryCatchTestTwo();
}
}
import com.google.common.collect.Lists; import java.util.List; /** * Created by luyangli on 15-10-1. */ public class TryCatCh { /** * TryCatch 初探究 */ public void tryCatchTestOne() { List<Integer> list = Lists.newArrayList(); for (int i = 0; i < 10; i++) { list.add(i); } for (Integer integer : list) { try { if (integer == 4) { throw new Exception("異常測試"); } else { System.out.println(integer); } } catch (Exception e) { System.out.println(e); } finally { System.out.println("trycatch 最後都會執行哦"); } } } public void tryCatchTestTwo() { List<Integer> list = Lists.newArrayList(); try { for (int i = 0; i < 10; i++) { list.add(i); } for (Integer integer : list) { if (integer == 4) { throw new Exception("異常測試"); } else { System.out.println(integer); } } } catch (Exception e) { System.out.println(e); } finally { System.out.println("trycatch 最後都會執行哦"); } } }
我們能先分析以下這個語句的執行結果:
第一個函數的調用的時候我們執行到第四次的時候拋出一個異常來,他在等於4的時候就不進行打印了,但是呢他之後的數據會繼續打印出來也就0 1 2 3 5 6 7 8 9,這是因爲我們進行了異常的處理,這樣我們之後的情況不受影響。而第二個呢,只能是0 1 2 3 爲什麼呢,當然是沒有處理了,同學們你們看清了,第二個的try catch是加載總體的循環之外的哦。我們來看一下代碼的執行結果把:
0 trycatch 最後都會執行哦 1 trycatch 最後都會執行哦 2 trycatch 最後都會執行哦 3 trycatch 最後都會執行哦 java.lang.Exception: 異常測試 trycatch 最後都會執行哦 5 trycatch 最後都會執行哦 6 trycatch 最後都會執行哦 7 trycatch 最後都會執行哦 8 trycatch 最後都會執行哦 9 trycatch 最後都會執行哦 0 1 2 3 java.lang.Exception: 異常測試 trycatch 最後都會執行哦
當然注意一下就是,finally裏的結果是都會執行哦。
怎麼樣,try catch 很有用把,快動手試試把。