2017-07-14 2 views
-6

Ich kam aus .net Welt.Throwing Ausnahmen zwei Einstellungen

Ich habe eine Frage zu Ausnahmen in Java.

Was ist Respekt zwischen zwei Haltung werfen Ausnahmen:

public void f() throws Exception { 
    //some logic 
} 

und diese:

public void f() { 
    //some logic 
    throw new Exception(); 
} 

Wann sollte ich erste Einstellung und die zweite Einstellung verwenden?

+0

es in der zweiten Art und Weise tun, wenn Sie es nicht stören nicht gültig Java zu sein. –

+0

Die zweite ist ungültig. Du willst 'neue Exception()] werfen.'. –

+0

@ cᴏʟᴅsᴘᴇᴇᴅ und 'throws Exception' in der Methodensignatur, weil Sie keine unbehandelte checked Ausnahme haben können. –

Antwort

1

In Java müssen Sie angeben, wie sich Ihre Methode verhält. Dies schließt Ausnahmen ein, die möglicherweise ausgelöst werden können. Um zu erklären, dass Sie eine Ausnahme machen können, wird das Schlüsselwort throws verwendet (wie in Ihrem ersten Beispiel).

Beachten Sie, dass nur Ausnahmen, die von der Exception Klasse ableiten müssen hier dargestellt werden (es gibt auch RuntimeExceptions und andere Throwables, die dargestellt werden, nicht müssen. More here).

Um eine Ausnahme Sie müssen das Schlüsselwort throw gefolgt von der Instanz von jedem Exception (um genau zu sein, können Sie jeden Throwable werfen) zu werfen.

würde eine gültige Methode:

public void foo() throws Exception { 
    throw new Exception(); 
} 
1

ein Unterschied bei der Verwendung dieser beiden. Angenommen, die zweite Methode ist ohne s. Der erste Ansatz, throws, der in der Methodensignatur verwendet wird, gibt an, welche Exception mit dieser Methode ausgelöst werden kann. Sie können mehrere Ausnahmeklassen deklarieren. Bei einer aktivierten Exception kann der Aufrufer entweder diese Ausnahme behandeln, indem er sie abfängt, oder sie erneut auslösen, indem er eine andere throws-in-Methode deklariert.

public void f()throws IOException, SQLException { //some logic }

Der zweite Ansatz ist throw ohne s mit in jedem Teil des Codes durch eine Instanz gefolgt verwendet, wenn Sie eine spezifische Ausnahme von dem Anrufer werfen müssen.

public void f(){ 
    //some logic 
throw new ArithmeticException("sorry"); 
} 

können Sie weitere Informationen throw and throws in Java

Verwandte Themen