2016-04-19 29 views
1

Angenommen, ich habe eine Klasse, die Voraussetzung ist, dass "den folgenden Code ändern, um checked Ausnahme zu werfen, wenn" den "ist 0, und ändern Sie die Funktion, um diese Ausnahme zu fangen".Throw Ausnahme in Java

Welche der folgenden ist der richtige Weg, um eine Ausnahme zu werfen?

Option 1:

void divide(int num, int den) throws Exception{ 
    if(den==0){ 
     throw new Exception("Dividebyzero"); 
    } 
    System.out.println(""+(num/den)); 
} 
void fun(){ 
    try { 
     divide(4,2); 
    } catch (Exception e) { 
    } 
} 

Option 2: // Ich denke, das ist richtig

void divide(int num, int den){ 
    if(den==0){ 
     throw new RuntimeException("Dividebyzero"); 
    } 
    System.out.println(""+(num/den)); 
} 
void fun(){ 
    try { 
     divide(4,2); 
    } catch (RuntimeException e) { 
    } 
} 

3 Option:

void divide(int num, int den) throws Exception{ 
    if(den==0){ 
     throw new RuntimeException; 
    } 
    System.out.println(""+(num/den)); 
} 
void fun(){ 
    try { 
     divide(4,2); 
    } catch (Exception, RuntimeException) { 
    } 
} 

Dieses Problem aus einem der Java kam Übungen. Ich habe Java seit mehreren Jahren gelernt, aber ich bin etwas verwirrt über den Versuch, Fang werfen. Persönlich denke ich, dass Option 2 korrekt ist, weil wir die Ausnahme nur einmal werfen, oder ich liege falsch?

+0

Option 3 wird nicht kompiliert, und es gibt nicht viel von einem Unterschied in Option 1 oder 2 –

+0

Bitte ignorieren Sie kleine Syntaxfehler, aber betrachten Sie die Gesamtstruktur @ cricket_007 – user6119494

+0

Sie fragen also, welche Unterklasse von Exception zu verwenden? –

Antwort

3

Welcher der folgenden ist der richtige Weg, um eine Ausnahme auszulösen?

Ich würde den Code nicht komplizieren, stattdessen würde ich die Ausnahme verwenden, die es bereits wirft.

Eine andere Ausnahme ist nicht nur komplizierter, sondern auch verwirrend.


Sets kann es ein anderes Beispiel, dann ist IllagelArgumentException eine gute Wahl für ein illegales Argument, wie ein Array erstellen

void createArray(int size) { 
    if (size < 0) 
     throw IllegalArgumentException("Size must be non-negative " + size); 
    this.array = new int[size]; 
}