2012-03-15 5 views
5
public class ThrowException { 
    public static void main(String[] args) { 
     try { 
      foo(); 
     } 
     catch(Exception e) { 
      if (e instanceof IOException) { 
       System.out.println("Completed!"); 
      } 
      } 
    } 
    static void foo() { 
     // what should I write here to get an exception? 
    } 
} 

Witam! Właśnie zacząłem się uczyć wyjątków i muszę złapać wyroki, więc proszę, czy ktoś może mi dostarczyć rozwiązanie? Byłbym bardzo wdzięczny. Dzięki!Jak rzucić wyjątek IOException?

+0

Co jest 'foo' i jak to się ma do' A'? –

+1

To jest po prostu podstawowa składnia języka Java, o której uczy cię każda książka lub wprowadzenie do Javy. Proponuję trochę przeczytać. – ColinD

Odpowiedz

15
static void foo() throws IOException { 
    throw new IOException("your message"); 
} 
+0

Czy powinienem napisać to w metodzie foo? –

+0

Tak. Jeśli ta linia zostanie osiągnięta, zostanie zgłoszony wyjątek. –

+1

Należy zauważyć, że należy zadeklarować metodę foo, aby rzucić wyjątek. w przeciwnym razie dostaniesz błąd kompilatora – ewok

6
try { 
     throw new IOException(); 
    } catch(IOException e) { 
     System.out.println("Completed!"); 
    } 
1

Właśnie rozpoczął wyjątki uczenia się i trzeba złapać wyjątek

rzucić wyjątek

throw new IOException("Something happened") 

Aby złapać wyjątek ten jest lepszy nie użyj Exception bec ause jest znacznie rodzajowe, zamiast złapać specyficzny wyjątek, że wiesz jak obsługiwać:

try { 
    //code that can generate exception... 
}catch(IOException io) { 
    // I know how to handle this... 
} 
1

Jeśli celem jest rzucić wyjątek od metody foo(), trzeba zadeklarować ją w następujący sposób:

public void foo() throws IOException{ 
    \\do stuff 
    throw new IOException("message"); 
} 

Następnie w głównym:

public static void main(String[] args){ 
    try{ 
     foo(); 
    } catch (IOException e){ 
     System.out.println("Completed!"); 
    } 
} 

zauważyć, że chyba foo jest uznane throw IOException, próbując złapać jeden będzie powodować błąd kompilatora. Kodowanie go przy użyciu catch (Exception e) i instanceof uniemożliwi błąd kompilatora, ale nie jest konieczne.

0

Może to pomoże ...

Uwaga czystsze sposób do połowu wyjątki w poniższym przykładzie - nie trzeba się e instanceof IOException.

public static void foo() throws IOException { 
    // some code here, when something goes wrong, you might do: 
    throw new IOException("error message"); 
} 

public static void main(String[] args) { 
    try { 
     foo(); 
    } catch (IOException e) { 
     System.out.println(e.getMessage()); 
    } 
} 
1

Spróbuj następujący kod:

throw new IOException("Message");