我们可以让JVM抛出我们自己的用户定义的异常吗?

时间:2013-08-01 16:46:36

标签: java exception-handling

在java预定义的异常中自动抛出。等,

int a=10, b=0;
c = a/b;

抛出ArithmeticException

int a[3] = {1, 2, 3};
int b = a[4];

抛出ArrayOutOfBoundException

其中在用户定义的异常的情况下,我们应该创建该异常类的对象并手动抛出它。可以使我自己的异常行为与上述两种情况一样吗?

3 个答案:

答案 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(未经检查),而且不必声明。