熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

java程序設計與問題解決

2013-11-23 19:23:02  來源: Java核心技術 

  異常處理允許讀者為程序的正常情況單獨設計和編寫代碼並與不正常情況下的處理代碼分開

  throw語句的作用類似一個方法調用但它並沒有去調用一個方法而是調用了catch塊

  預定義的異常類Exception是所有異常類的祖先我們也可以定義自己的異常類

  如果程序試圖使用一個越界的數組索引就會拋出一個ArrayIndexOutOfBoundsException異常除非在一個catch塊中把這個異常捕獲否則程序就會結束對於這種特殊的異常通常不在catch中捕獲它這種異常說明代碼有邏輯錯誤需要更改代碼而不是捕獲異常因此這種異常通常起到運行時提示錯誤的功能而不是異常的功能

  自定義異常類時構造器通常是僅有的不是從基類中繼承的方法

  在定義異常類時應當保留getMessage不變為了保證這個功能應當在自定義異常類的構造函數中調用super(message)public MySpecialException(String message)

  { super(message)

  }

  如果要在自己的代碼中插入throw語句最好定義自己的異常類這樣當自己的代碼捕獲一個異常時多個catch塊可以區分自己的異常和預定義的類中的方法拋出的異常這樣能更精確的捕獲異常已經做異常處理(領會精神)

  聲明異常(類比推脫責任)

  加入有個方法methodA聲明如下public void methodA() throws DivideByZeroException在這種情況下methodA就免除了捕獲在其執行期間所拋出的任何DivideByZeroException類型的異常的責任而輸入有一個methodB方法中包好對methodA的調用則methodB必須捕獲並處理這個異常

  如果一個方法拋出了異常而這個異常沒有在此方法中被捕獲則這個異常拋出後該方法的調用立即結束

  如果某個方法在其throws子句中列出了一個異常且某段代碼中有對該方法的調用則代碼必須捕獲此異常或者在throws子句中聲明此異常

  如果在派生類中重定義某方法則重定義的方法的throws的子句不能包含基類中同一個方法的throws子句中沒有列出的異常但是可以減少重定義的方法的throws子句中聲明的異常

  斷言檢測失敗時會拋出AssertionError類的異常一般這個異常不會被某個catch塊捕獲但是如果願意可以將其捕獲只是這種做法不常見

  Error類或RuntimeException類的子孫類異常不需要被catch塊捕獲或被throws子句聲明其實這些類並不是異常只是其表現類似異常因此也把它們看做異常

  對於多重拋出和捕獲首次捕獲時需捕獲更明確的異常

  throw語句並不是拋出異常的唯一一種語句方法調用也能拋出異常(明確的說方法調用可以拋出其throws子句中聲明的異常)

  如果可以用別的方法容易解決問題就不要拋出異常

  大多數情況下throw語句應當用在方法內且在該方法的throws子句中聲明也就是把拋出異常和捕獲異常分離到單獨的不同方法中去

  在catch塊內拋出異常是合法的

  在普通的Java應用程序中沒有捕獲的異常會使程序在顯示一個錯誤信息之後結束但在GUI程序中(Jframe GUI或applet)的未捕獲異常不會使程序結束而且除非你去捕獲異常否則GUI程序可能無法應付該異常用戶也會很茫然因此GUI程序中確保所有拋出的異常都被捕獲尤其重要


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26756.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.