自定義異常:步驟
一:創建一個類繼承於Throwable或其子類;
二:添加構造方法;
三:在一個方法中使用throw拋出異常;
四:在另一個方法中捕獲並處理異常。
示例:
一、繼承Exception類
Java代碼
- public class MyFirstException extends Exception {
- public MyFirstException() {
- super();
- }
- public MyFirstException(String msg) {
- super(msg);
- }
- public MyFirstException(String msg, Throwable cause) {
- super(msg, cause);
- }
- public MyFirstException(Throwable cause) {
- super(cause);
- }
- //自定義異常類的主要作用是區分異常發生的位置,當用戶遇到異常時,
- //根據異常名就可以知道哪裡有異常,根據異常提示信息進行修改。
- }
二、 繼承Throwable 類
Java代碼
- public class MySecondException extends Throwable {
- public MySecondException() {
- super();
- }
- public MySecondException(String msg) {
- super(msg);
- }
- public MySecondException(String msg, Throwable cause) {
- super(msg, cause);
- }
- public MySecondException(Throwable cause) {
- super(cause);
- }
- }
三、測試
Java代碼
- /**
- * 自定義異常類的使用
- * @author new
- *
- */
- public class TestMyException {
- public static void firstException() throws MyFirstException{
- throw new MyFirstException("\"firstException()\" method occurs an exception!");
- }
- public static void secondException() throws MySecondException{
- throw new MySecondException("\"secondException()\" method occurs an exception!");
- }
- public static void main(String[] args) {
- try {
- TestMyException.firstException();
- TestMyException.secondException();
- } catch (MyFirstException e1){
- System.out.println("Exception: " + e1.getMessage());
- e1.printStackTrace();
- } catch (MySecondException e2){
- System.out.println("Exception: " + e2.getMessage());
- e2.printStackTrace();
- }
- //當一個try塊後面跟著多個catch塊時,如果發生的異常匹配第一個catch塊的參數,便將異常處理權利交給第一個catch塊。
- //如果發生的異常與第一個catch塊不匹配,便看是否與第二個catch塊匹配,依次下去,如果到最後依然無法匹配該異常,
- //便需要在方法聲明中添加一條throw語句,將該異常拋出。
- //因此,在有多個catch塊,而且每次處理的異常類型具有繼承關系時,應該首先catch子類異常,再catch父類異常。
- //比如,如果MySecondException繼承MyFirstException,那麼最好將catch(MySecondException e2)放在前面
- //把catch (MyFirstException e1)放在後面。
- }