在 java 中预定义的异常会自动抛出。像,
int a=10, b=0;
c = a/b;
抛出算术异常
int a[3] = {1, 2, 3};
int b = a[4];
抛出 ArrayOutOfBoundException
其中在用户定义异常的情况下,我们应该创建该异常类的对象并手动抛出它。我可以让自己的异常表现得像上述两种情况吗?
在 java 中预定义的异常会自动抛出。像,
int a=10, b=0;
c = a/b;
抛出算术异常
int a[3] = {1, 2, 3};
int b = a[4];
抛出 ArrayOutOfBoundException
其中在用户定义异常的情况下,我们应该创建该异常类的对象并手动抛出它。我可以让自己的异常表现得像上述两种情况吗?
我可以让自己的异常表现得像上述两种情况吗?
不,它必须内置到 JVM 中。
你可以,但你必须抓住原件,然后扔掉你自己的。
try {
int a=10, b=0;
int c=a/b;
catch (Exception e){
//disregard exception, throw your own
throw new MyCustomException("My Custom Message");
}
或者,如果您想在通常不存在异常的情况下抛出异常,您只需抛出它!
// In this case, only move forward if a < b
int a = 10, b = 0;
if (a >= b)
throw new MustBeLessThanException("a must be less than b!");
或者类似的傻事。
请务必使自定义类扩展 Exception 或子类之一。
不,你所能做的就是抓住然后扔你自己的:
try {
int a=10, b=0;
c = a/b;
} catch (ArithmetikException e) {
throw MyException("Bad!", e); // pass in e to getr a meaningful stacktrace
}
但我真的不建议这样做(除非在您必须这样做的情况下,即当实现一个未声明可能在您的代码中引发的异常的接口时)。但是话又说回来,您的示例都是 RuntimeExceptions (未选中)并且不必声明。