2013-08-01 183 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(它是未選中的),並且不需要聲明。

相關問題