如何在Java中创建自定义异常类型?

2022-08-31 06:52:43

我想在Java中创建自定义异常,我该怎么做?

...

try{

...

String word=reader.readLine();

if(word.contains(" "))
  /*create custom exception*/

}
catch(){

当我使用 创建自定义异常时,我收到错误throw new...unreported exception...must be caught or declared to be thrown


答案 1

您应该能够创建一个扩展 Exception 类的自定义异常类,例如:

class WordContainsException extends Exception
{
      // Parameterless Constructor
      public WordContainsException() {}

      // Constructor that accepts a message
      public WordContainsException(String message)
      {
         super(message);
      }
 }

用法:

try
{
     if(word.contains(" "))
     {
          throw new WordContainsException();
     }
}
catch(WordContainsException ex)
{
      // Process message however you would like
}

答案 2

您需要创建一个从 扩展自 的类。它应该看起来像这样:Exception

public class MyOwnException extends Exception {
    public MyOwnException () {

    }

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

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

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

您的问题未指定是应选中还是取消选中此新异常。

正如您在此处看到的,这两种类型是不同的:

  • 已检查的异常旨在标记应由调用您的方法的开发人员处理的问题情况。应该有可能从这种异常中恢复过来。一个很好的例子是FileNotFoundException。这些例外是异常的子类。

  • 未经检查的异常表示代码中的 Bug,即可能无法从中恢复的意外情况。NullPointerException就是一个典型的例子。这些异常是 RuntimeException 的子类

已检查的异常必须由调用方法处理,方法是捕获它并采取相应的操作,或者将其抛给调用方法。未经检查的异常并不意味着被捕获,即使可以这样做。