2017-04-01 4 views
1

Wenn ich eine Superklasse verwenden wollte, um eine Ausnahme zu behandeln, muss ich noch try catch verwenden, um die Ausnahme zu behandeln? Dies ist der Code für die Superklasse und die Klasse, mit der ich sie getestet habe. Ich habe versucht, den Methodenquotienten in der Testklasse zu verwenden, aber ich musste eine try catch-Anweisung hinzufügen, um das zu tun, was ich tun wollte.Ausnahmebehandlung mit superclass-java

public class ExceptionA { 




public static int quotient(int numerator, int denominator) 
    throws ArithmeticException 
{ 
    return numerator/denominator; // possible division by zero 
} 


} 

public class ExceptionTest { 


public static void main(String[] args) { 


    Scanner scanner = new Scanner(System.in); 
    boolean continueLoop = true; 




    do 
{ 
    try 
    { 
     System.out.println("Please enter an integer numerator"); 
     int numerator = scanner.nextInt(); 
     System.out.println("Please enter an integer denominator"); 
     int denominator = scanner.nextInt(); 

     int result = ExceptionA.quotient(numerator, denominator); 
     System.out.printf("%nResult: %d/%d = %d%n", numerator, 
     denominator , result); 
     continueLoop = false; 
    } 
    catch (ArithmeticException arithmeticException) 
    { 
     System.err.printf("%nException: %s%n" , arithmeticException); 
     System.out.printf("Zero is an invalid denominator. Please try again." 
       + "%n%n"); 
    } 

    } while(continueLoop); 

} 
} 

Antwort

0

Wenn die Methode eine Ausnahme auslöst, dann werden Sie entweder die Methode zu schreiben, eine Ausnahme zu werfen, oder ein try/catch verwenden, um die Ausnahme zu behandeln. An einem bestimmten Punkt müssen Sie versuchen/fangen, vor allem, wenn Sie den Code in Ihrer main Methode aufrufen.

+0

Haupt kann eine Ausnahme gut werfen –

+0

Ist es möglich, einen Versuch zu verwenden, fangen Sie in der Methode in der Oberklasse oder müssen Sie es erneut in der Hauptmethode aufrufen? –

+0

Sie möchten versuchen/fangen, wo Sie den Fehler behandeln möchten. Das sollte in der aufrufenden Methode geschehen, nicht in der Superklasse. Sie möchten das try/catch in der Hauptmethode aufrufen. – BlackHatSamurai