2017-06-12 3 views
0

Ich versuche, diesen Code zu kompilieren, aber es hält mit einem Fehler,JAVA. Ich erhalte eine ‚nicht gemeldete Ausnahme‘ Compiler-Fehler

errThrower.java:37: error: unreported exception Exception; must be caught or declared to be thrown 
throw new Exception(); 

Diese Ausnahme im callmethodErr() geworfen wird, und ich dachte, es gefangen wurde in Hauptsache, aber ich kann nicht herausfinden, was passiert.

Vielen Dank.

import java.util.IllegalFormatConversionException; 

public class errThrower 
{ 
    public static void main(String[] args) 
    { 
    try 
    { 
     callmethodErr(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    } 

    public static void methodErr() throws Exception 
    { 
    System.out.println("error thrown from methodErr"); 
    } 

    public static void callmethodErr() 
    { 
    try 
    { 
     methodErr(); 
    } 
    catch (Exception e) 
    { 
     System.out.println("error thrown from callMethodErr"); 
     throw new Exception();  
    } 
    } 
} 
+0

'callmethodErr()' wurde mit nicht definiert 'Exception' wirft, aber es tut. Sicherlich ist das offensichtlich? – EJP

+0

Bitte erinnere mich daran, dass es höflich ist, eine Antwort zu akzeptieren, wenn dir jemand geholfen hat .. – Stewart

Antwort

2

Diese Methode:

throw new Exception();   

aber nicht erklären, dass er throws Exception so:

public static void callmethodErr() 
{ 

die Zeile enthält

public static void callmethodErr() throws Exception 
{ 
1

Exception ist eine geprüfte Ausnahme, und das bedeutet, dass Sie es in der Methode abfangen müssen, in der es ausgelöst wird, oder deklarieren Sie, dass Ihre Methode diese Ausnahme auslösen könnte. Sie können das tun, indem Sie die Signatur Ihrer Methode callmethodErr wie folgt zu ändern:

public static void callmethodErr() throws Exception 
{ 
    // ... 
} 

Einem weiteren Details beschrieben, wie das funktioniert, sieht: The Catch or Specify Requirement in Oracle Java Tutorials.

1

Wie der Compiler sagt, kann die Methode callmethodErr eine Ausnahme auslösen. Sie müssen also diese Ausnahme in der Methode callmethodErr abfangen oder die Methode callmethodErr zum Auslösen der Ausnahme deklarieren. Ob Sie es in der main-Methode abfangen oder nicht, ist nicht relevant, denn Sie könnten auch die Methode callmethodErr von einer anderen Methode (nicht der main) aufrufen und vergessen, sie einzufangen, und der Compiler muss dies verhindern.

erklären das Verfahren wie dieses public static void callmethodErr() throws Exception

Verwandte Themen