亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Java中創建自定義異常?

如何在Java中創建自定義異常?

LEATH 2019-08-31 14:54:06
我們如何在Java中創建自定義異常?
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

要定義已檢查的異常,請創建子類(或子類的層次結構)java.lang.Exception。例如:


public class FooException extends Exception {

  public FooException() { super(); }

  public FooException(String message) { super(message); }

  public FooException(String message, Throwable cause) { super(message, cause); }

  public FooException(Throwable cause) { super(cause); }

}

可能拋出或傳播此異常的方法必須聲明:


public void calculate(int i) throws FooException, IOException;

...并且調用此方法的代碼必須處理或傳播此異常(或兩者):


try {

  int i = 5;

  myObject.calculate(5);

} catch(FooException ex) {

  // Print error and terminate application.

  ex.printStackTrace();

  System.exit(1);

} catch(IOException ex) {

  // Rethrow as FooException.

  throw new FooException(ex);

}

您將在上面的示例中注意到IOException被捕獲并重新拋出為FooException。這是用于封裝異常的常用技術(通常在實現API時)。


有時會出現這樣的情況:您不希望強制每個方法在其throws子句中聲明您的異常實現。在這種情況下,您可以創建未經檢查的異常。未經檢查的異常是任何擴展的異常java.lang.RuntimeException(它本身是其子類java.lang.Exception):


public class FooRuntimeException extends RuntimeException {

  ...

}

方法可以在FooRuntimeException不聲明的情況下拋出或傳播異常; 例如


public void calculate(int i) {

  if (i < 0) {

    throw new FooRuntimeException("i < 0: " + i);

  }

}

未經檢查的異常通常用于表示程序員錯誤,例如將無效參數傳遞給方法或嘗試破壞數組索引邊界。


該java.lang.Throwable班是所有的錯誤和異常,可以在Java中拋出的根源。 java.lang.Exception并且java.lang.Error都是Throwable。的子類。任何子類都Throwable可能被拋出或被捕獲。但是,捕獲或拋出通常是不好的做法,Error因為這用于表示JVM內部通常無法由程序員“處理”的錯誤(例如OutOfMemoryError)。同樣你應該避免捕捉Throwable,這可能會導致你Error除了Exceptions 之外還能捕捉到它。


查看完整回答
反對 回復 2019-08-31
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

public class MyException extends Exception {

        // special exception code goes here

}

把它扔成:


 throw new MyException ("Something happened")

趕上:


catch (MyException e)

{

   // something

}


查看完整回答
反對 回復 2019-08-31
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

對于已檢查的例外:


public class MyCustomException extends Exception { }

從技術上講,任何擴展Throwable都可以拋出,但異常通常是Exception類的擴展,以便它們被檢查異常(除了RuntimeException或基于它的類,未檢查),而不是其他常見類型的throwable,Error通常不是為了在JVM內部之外進行優雅處理而設計的。


您也可以將異常設置為非公共,但是您只能在定義它們的包中使用它們,而不是跨包。


至于拋出/捕獲自定義異常,它就像內置的那樣 - throw via


throw new MyCustomException()

并通過


catch (MyCustomException e) { }


查看完整回答
反對 回復 2019-08-31
  • 3 回答
  • 0 關注
  • 1043 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號