2013-08-01 127 views
3

在java中预定义的Exceptions会自动抛出。像,我们可以让JVM抛出我们自己的用户定义异常吗?

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

抛出ArithmeticException

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

抛出ArrayOutOfBoundException

,其中,在用户定义的异常的情况下,我们应该创建一个Exception类的一个对象,并把它manually.Can使我的自己的异常行为像上述两种情况?

+1

像在哪里?在什么情况下你会抛出你的异常?示例非常有用。 –

+1

这可能会破坏更多的代码,而不是有用的代码。 –

回答

6

我可以使自己的异常行为像上述两种情况吗?

不,它必须内置到JVM中。

1

你可能,但你必须赶上原来的,然后扔你自己的。或者,如果你有一个条件,你想抛出一个异常情况下,通常不会存在异常,你只需要抛出它!

// 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!"); 

或者这样的傻事。

务必使自定义类扩展异常或其中一个子类。

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(它是未选中的),并且不需要声明。

相关问题