在java预定义的异常中自动抛出。等,
int a=10, b=0;
c = a/b;
抛出ArithmeticException
int a[3] = {1, 2, 3};
int b = a[4];
抛出ArrayOutOfBoundException
其中在用户定义的异常的情况下,我们应该创建该异常类的对象并手动抛出它。可以使我自己的异常行为与上述两种情况一样吗?
答案 0 :(得分:6)
我可以将自己的异常行为与上述两种情况相同吗?
不,它必须内置到JVM中。
答案 1 :(得分:1)
你可以,但你必须抓住原件,然后自己扔。
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或其中一个子类。
答案 2 :(得分:1)
不,你所能做的就是赶上然后扔掉自己的:
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(未经检查),而且不必声明。