如何在Java中创建自定义异常?
如何在Java中创建自定义异常?
回答:
要定义受检查的异常,请创建的子类(或子类的层次结构)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
)。同样,你应该避免catch Throwable
,这可能导致你Error除了Exceptions
之外还捕获s。
以上是 如何在Java中创建自定义异常? 的全部内容, 来源链接: utcz.com/qa/403792.html