Web | Coding | Blog | SOHO

[Java]自行撰寫例外類別 & 例外的重點範例

本篇除了介紹如何自行撰寫例外類別外,也會將前幾篇 例外的觀念 通通帶入至範例來使用。


在[Java]於程式中拋出例外 throw 文末提到

若有自己寫的例外類別 程式是無法自動拋出的

本篇就是介紹如何自行設計例外類別。

可以複習一次[Java]例外類別 Throwable 中的 Throwable 的關係圖:

所有能夠處理的例外都是繼承 Exception 類別,因此我們自行設計的例外類別不外乎就是以下格式:

class 例外類別名稱 extends Exception
{
   //自行定義
}

透過一範例來了解用法:

以下範例也會綜合相關例外的觀念,所以可以多看幾次唷!



首先自行設計一圓形例外,因為內建的 Exception 擁有極豐富的函數,因此甚至我們能不撰寫敘述也能使用

class CircleException extends Exception
{
}

在圓形類別當中,指定函數拋出例外(觀念複習 throws , new

class CCircle
{
   private double radius;
   public void setRadius(double r) throws CCircleException
   {
      if(r<0)
      {
         throw new CircleException();
      }
      else
         radius=r;
   }

   public void show()
   {
      System.out.println("面積="+3.14*radius*radius);
   }
}

並在main() 中撰寫 try-catch-finally 區塊(觀念複習 不同類別拋出例外

try
{
   CCircle.setRadius(-100.0);
}
catch(CircleException e)
{
   System.out.println(e+" 被拋出");
}


以上有了基本的程式架構後,讓我們看完整的程式範例:

class CircleException extends Exception
{
}
class CCircle
{
   private double radius;
   public void setRadius(double r) throws CircleException
   {
      if(r<0)
      {
         throw new CircleException();
      }
      else
         radius=r;
   }

   public void show()
   {
      System.out.println("面積="+3.14*radius*radius);
   }
}

public class exception_ex
{
   public static void main(String args[])
   {
      CCircle cir=new CCircle();
      try
      {
         cir.setRadius(-100.0);
      }
      catch(CircleException e)
      {
         System.out.println(e+" 被拋出");
      }
      cir.show();
   }
}
  1. 自行撰寫例外類別。
  2. CCircle 類別為一個有判斷半徑的setRadius函數以及計算圓面積的函數
    在判斷半徑的setRadius函數,我們指定之拋出例外;因此若半徑小於0時 將會拋出例外。
  3. 在main() 函數中,撰寫了 try-catch-finally 區塊 用來接收例外。
    (從不同類別的函數拋出例外)

在此範例,呼叫CCircle 中的setRadius 函數,傳入-100 的值
因此會拋出例外。
這時 catch 捕捉後會印出CircleException 被拋出,再執行最後的 cir.show();

此範例的輸出:
CCircleException 被拋出
area=0.0

Q:為什麼面積會是零呢?

A:因為例外拋出後,就沒有再做後續的處理;因此面積沒有被計算到 所以就為0



參考書籍:Java 7 教學手冊
Java 學習日誌 (點此閱讀所有 Java日誌)


如果您喜歡本站的文章,也歡迎將文章分享轉貼並註明出處;
另外還未按讚粉絲專頁的朋友,也可以動動手點擊追蹤最新的文章唷:

Comments

comments

如果您喜歡本站的文章,也歡迎將文章分享轉貼並註明出處;另外還未按讚粉絲專頁的朋友,也可以動動手點擊追蹤最新的文章唷:


© 2017 4xCode™ | Design:SC 站長

歡迎來到SC站長網站

 

本站文章不再更新,新文章將發表至

4 x ‘s Space 網站

 

謝謝您一直以來的支持,我們新網站見~

 

SC站長網站文章也會將慢慢轉移至新網站,

新網站連結 4-x.tw 點此前往,或點擊上方圖案)