Board logo

標題: 例外處理 (二) [打印本頁]

作者: tonyh    時間: 2020-9-18 20:45     標題: 例外處理 (二)

進行例外處理是不希望程式中斷。而是希望程式能捕捉錯誤並繼續執行,若錯誤是使用者輸入不正確資料所造成的,可以要求使用者輸入正確資料再繼續執行,或者不處理使用者輸入資料繼續做其他工作。

Java使用 try … catch … finally 敘述來解決例外處理,它的方式是將被監視的敘述區段寫在try大括號內,當程式執行到try內的敘述有發生錯誤時,會逐一檢查捕捉(catch)該錯誤,以便執行該catch內敘述。最後不管是否有符合catch,都會執行最後的finally敘述區段。例外處理的格式如下:

try
{
    預期可能發生例外的敘述
}
catch(例外物件)
{
    對應的處理程序
}
finally       //可有可無
{
    無論例外是否發生都會處理的程序
}


試運用無窮迴圈搭配 try...catch 語法捕捉例外, 使執行時無論發生什麼例外, 程式都不會因此而中斷. 另外使用 toString() 方法將捕捉到的例外顯示出來.

  1. import java.util.Scanner;
  2. public class Ch52
  3. {

  4.     public static void main(String[] args)
  5.     {
  6.         for(;;)
  7.         {
  8.             try
  9.             {
  10.                 Scanner s=new Scanner(System.in);
  11.                 int x,y;
  12.                 System.out.print("輸入分子: ");
  13.                 x=s.nextInt();
  14.                 System.out.print("輸入分母: ");
  15.                 y=s.nextInt();
  16.                 System.out.println(x+"/"+y+"="+(x/y));
  17.             }catch(Exception e)
  18.             {
  19.                 System.out.println("程式發生錯誤!");
  20.                 System.out.println("例外類別: "+e.toString());
  21.             }
  22.             System.out.println();
  23.         }
  24.     }
  25. }
複製代碼

作者: 黃辰昊    時間: 2020-9-18 20:57

  1. import java.util.Scanner;
  2. public class Ch52
  3. {

  4.     public static void main(String[] args)
  5.     {
  6.         for(;;)
  7.         {
  8.             try
  9.             {
  10.                 Scanner s=new Scanner(System.in);
  11.                 int x,y;
  12.                 System.out.print("輸入分子: ");
  13.                 x=s.nextInt();
  14.                 System.out.print("輸入分母: ");
  15.                 y=s.nextInt();
  16.                 System.out.println(x+"/"+y+"="+(x/y));
  17.             }catch(Exception e)
  18.             {
  19.                 System.out.println("程式發生錯誤!");
  20.                 System.out.println("例外類別: "+e.toString());
  21.             }
  22.             System.out.println();
  23.         }
  24.     }
  25. }
複製代碼

作者: 孫嘉駿    時間: 2020-9-18 20:57

  1. import java.util.Scanner;
  2. public class Ch01
  3. {

  4.     public static void main(String[] args)
  5.     {
  6.         for(;;)
  7.         {
  8.             try
  9.             {
  10.                 Scanner s=new Scanner(System.in);
  11.                 int x,y;
  12.                 System.out.print("輸入分子: ");
  13.                 x=s.nextInt();
  14.                 System.out.print("輸入分母: ");
  15.                 y=s.nextInt();
  16.                 System.out.println(x+"/"+y+"="+(x/y));
  17.             }catch(Exception e)
  18.             {
  19.                 System.out.println("程式發生錯誤!");
  20.                 System.out.println("例外類別: "+e.toString());
  21.             }
  22.             System.out.println();
  23.         }
  24.     }
  25. }
複製代碼

作者: 黃宥華    時間: 2020-9-18 20:58

  1. import java.util.Scanner;


  2. public class Ch01 {
  3.         static Scanner s=new Scanner(System.in);
  4.         public static void main(String[] args) {
  5.                 try{
  6.                         int x,y;
  7.                         System.out.print("輸入分子");
  8.                         x=s.nextInt();
  9.                         System.out.print("輸入分子");
  10.                         y=s.nextInt();
  11.                         System.out.println(x+"/"+y+"="+(x/y));
  12.                 }
  13.                 catch(Exception e)
  14.                 {
  15.                 System.out.println("錯!!!");       
  16.                 System.out.println("例外類別: "+e.toString() );       
  17.                
  18.                 }
  19.         }

  20. }
複製代碼

作者: 夏子涵    時間: 2020-9-18 20:58

  1. import java.util.Scanner;
  2. public class Ch01
  3. {

  4.     public static void main(String[] args)
  5.     {
  6.         for(;;)
  7.         {
  8.             try
  9.             {
  10.                 Scanner s=new Scanner(System.in);
  11.                 int x,y;
  12.                 System.out.print("輸入分子: ");
  13.                 x=s.nextInt();
  14.                 System.out.print("輸入分母: ");
  15.                 y=s.nextInt();
  16.                 System.out.println(x+"/"+y+"="+(x/y));
  17.             }catch(Exception e)
  18.             {
  19.                 System.out.println("程式發生錯誤!");
  20.                 System.out.println("例外類別: "+e.toString());
  21.             }
  22.             System.out.println();
  23.         }
  24.     }
  25. }
複製代碼

作者: 陳宥穎    時間: 2020-9-18 20:59

本帖最後由 陳宥穎 於 2020-9-18 21:01 編輯
  1. import java.util.Scanner;
  2. public class Ch30 {

  3. public static void main(String[] args) {
  4.         while(true)
  5.         {
  6.                 try
  7.                 {
  8.                         Scanner s=new Scanner(System.in);
  9.                         int x,y;
  10.                         System.out.println("輸入分子: ");
  11.                         x=s.nextInt();
  12.                         System.out.println("輸入分母: ");
  13.                         y=s.nextInt();
  14.                         System.out.println("x/y="+x/y);       
  15.                         }
  16.                 catch(Exception a)
  17.                 {
  18.                         System.out.println("error");
  19.                         System.out.println(a.toString());
  20.                 }
  21.                         System.out.println();       
  22.                 }                               
  23.         }
  24. }
複製代碼

作者: 董宸佑    時間: 2020-9-18 21:00

  1. import java.util.Scanner;
  2. public class Ch01 {
  3.         public static void main(String[] args) {
  4.                 for(;;)
  5.                 {
  6.                         try{
  7.                                 Scanner s=new Scanner(System.in);
  8.                                 int x,y;
  9.                                 System.out.print("輸入分子: ");
  10.                                 x=s.nextInt();
  11.                                 System.out.print("輸入分母: ");
  12.                                 y=s.nextInt();
  13.                                 System.out.println(x+"/"+y+"="+(x/y));
  14.                         }catch(Exception e){
  15.                                 System.out.println("程式發生錯誤!");
  16.                                 System.out.println("例外類別: "+e.toString());
  17.                         }
  18.                 }
  19.         }

  20. }
複製代碼

作者: 黃柏叡    時間: 2020-9-18 21:02

  1. import java.util.Scanner;
  2. public class Ch01
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 for(;;)
  7.                 {
  8.                         try
  9.                         {
  10.                                 Scanner s=new Scanner(System.in);
  11.                                 int x,y;
  12.                                 System.out.print("輸入分子");
  13.                                 x=s.nextInt();
  14.                                 System.out.print("輸入分母");
  15.                                 y=s.nextInt();
  16.                                 System.out.println(x+"/"+y+"="+(x/y));
  17.                         }catch(Exception e)
  18.                         {
  19.                                 System.out.println("程式發生錯誤!");
  20.                 System.out.println("例外類別: "+e.toString());
  21.                         }
  22.                         System.out.println();
  23.                 }
  24.         }

  25. }
複製代碼

作者: 林政瑜    時間: 2020-9-18 21:02

  1. import java.util.Scanner;
  2. public class Ch01
  3. {

  4.     public static void main(String[] args)
  5.     {
  6.         for(;;)
  7.         {
  8.             try
  9.             {
  10.                 Scanner s=new Scanner(System.in);
  11.                 int x,y;
  12.                 System.out.print("輸入分子: ");
  13.                 x=s.nextInt();
  14.                 System.out.print("輸入分母: ");
  15.                 y=s.nextInt();
  16.                 System.out.println(x+"/"+y+"="+(x/y));
  17.             }catch(Exception e)
  18.             {
  19.                 System.out.println("程式發生錯誤!");
  20.                 System.out.println("例外類別: "+e.toString());
  21.             }
  22.             System.out.println();
  23.         }
  24.     }
  25. }
複製代碼

作者: 劉愷鈞    時間: 2020-9-18 21:03

  1. import java.util.Scanner;
  2. import java.util.concurrent.ExecutionException;
  3. public class Ch01 {
  4.         public static void main(String[] args) {
  5.                 for(;;)
  6.                 {
  7.                         try
  8.                         {
  9.                                 Scanner s=new Scanner(System.in);
  10.                                 int x,y;
  11.                                 System.out.print("輸入分子:");
  12.                                 x=s.nextInt();
  13.                                 System.out.print("輸入分母:");
  14.                                 y=s.nextInt();
  15.                                 System.out.println(x+"/"+y+"="+(x/y));
  16.                         }catch(Exception e)
  17.                         {
  18.                                 System.out.print("程式發生錯誤!");
  19.                                 System.out.println("例外類別: "+e.toString());
  20.                         }
  21.                 }
  22.         }
  23. }
複製代碼

作者: 李宇澤    時間: 2020-9-25 19:43

  1. import java.util.Scanner;
  2. public class Ch52
  3. {

  4.     public static void main(String[] args)
  5.     {
  6.         for(;;)
  7.         {
  8.             try
  9.             {
  10.                 Scanner s=new Scanner(System.in);
  11.                 int x,y;
  12.                 System.out.print("輸入分子: ");
  13.                 x=s.nextInt();
  14.                 System.out.print("輸入分母: ");
  15.                 y=s.nextInt();
  16.                 System.out.println(x+"/"+y+"="+(x/y));
  17.             }catch(Exception e)
  18.             {
  19.                 System.out.println("程式發生錯誤!");
  20.                 System.out.println("例外類別: "+e.toString());
  21.             }
  22.             System.out.println();
  23.         }
  24.     }
  25. }
複製代碼

作者: 沈子晏    時間: 2020-10-16 19:57

  1. import java.util.Scanner;
  2. public class Ch50 {

  3.         public static void main(String[] args) {
  4.                
  5.                 while(true)
  6.                 {
  7.                        
  8.                         try{
  9.                                 Scanner s=new Scanner(System.in);
  10.                                 int x,y;
  11.                                 System.out.print("輸入分子: ");
  12.                                 x=s.nextInt();
  13.                                 System.out.print("輸入分母: ");
  14.                                 y=s.nextInt();
  15.                                 System.out.println(x+"/"+y+"="+(x/y));
  16.                                 System.out.println();
  17.                                
  18.                         }catch(Exception e)
  19.                         {
  20.                                 System.out.println("程式發生錯誤");
  21.                                 System.out.println("例外類別"+e.toString());
  22.                         }
  23.                 }

  24.         }

  25. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2