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。

2020-03-16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值