1. 程式人生 > >Java語言異常處理學習筆記

Java語言異常處理學習筆記

學習過java的都知道異常處理的框架:

它的執行過程一般分為兩條線:

1.try語句塊中沒有異常,則正常執行try語句塊,catch和finally中的語句不被執行。

2.try語句中有異常,則執行到異常的那句程式碼後立馬跳到catch語句塊去匹配,匹配到對應的Exception之後進入到相應的語句塊中去執行。

3.finally語句塊中的程式碼通常總是會執行。

下面寫幾段很相似的程式碼:

public class TryCatch {
 public static void main(String[]  args) {
  try{
   int i = 1/0;
  } catch(Exception e) {
   System.out.println("exception");
  } finally {
   System.out.println("finally");
  }
 }
}

執行結果:

跟上面描述的一樣,try中發現異常,先走catch,然後走finally

public class TryCatch {
 public static void main(String[]  args) {
  try{
   int i = 1/0;
   System.exit(-1);
  } catch(Exception e) {
   System.out.println("exception");
  } finally {
   System.out.println("finally");
  }
 }
}

執行結果:

這說明異常發生時之後的程式碼是不會執行的,否則會出現下面的結果

public class TryCatch {
 public static void main(String[]  args) {
  try{
   int i = 1/1;
   System.exit(-1);
  } catch(Exception e) {
   System.out.println("exception");
  } finally {
   System.out.println("finally");
  }
 }
}

執行結果:

如果try語句塊中沒有異常的話,程式碼中有退出程式的語句的話finally語句塊不會被執行,直接退出程式

public class TryCatch {
 public static void main(String[]  args) {
  try{
   int i = 1/1;
  } catch(Exception e) {
   System.out.println("exception");
  } finally {
   System.out.println("finally");
  }
 }
}

執行結果:

try語句塊中沒有異常同時沒有退出程式語句,則finally語句塊依然要被執行

public class TryCatch {
 public static void main(String[]  args) {
  try{
   int i = 1/0;
  } catch(Exception e) {
   System.out.println("exception");
   System.exit(-1);
  } finally {
   System.out.println("finally");
  }
 }
}

執行結果:

如果catch語句塊中出現退出程式語句,則finally語句塊不會被執行

綜上,一個簡單的異常處理機制也是有很多好玩的東西值得去探索的。