2012-03-15 32 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? 
    } 
} 

Xin chào! Tôi chỉ mới bắt đầu học ngoại lệ và cần bắt kịp một sự kiện, vì vậy, ai cũng có thể cung cấp cho tôi một giải pháp? Tôi rất biết ơn. Cảm ơn!làm thế nào để ném một IOException?

+0

'foo' là gì và làm thế nào nó liên quan đến 'a'? –

+1

Đây chỉ là cú pháp Java cơ bản mà bất kỳ cuốn sách hoặc giới thiệu nào về Java sẽ dạy bạn. Tôi đề nghị đọc một số. – ColinD

Trả lời

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

Tôi có nên viết điều này trong phương pháp foo không? –

+0

Có. Nếu dòng này đạt đến một ngoại lệ sẽ bị ném. –

+1

lưu ý rằng phương thức foo phải được khai báo để ném ngoại lệ. nếu không bạn sẽ gặp lỗi biên dịch – ewok

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

Tôi chỉ mới bắt đầu ngoại lệ học tập và cần phải nắm bắt một ngoại lệ

Để ném một ngoại lệ

throw new IOException("Something happened") 

Để bắt ngoại lệ này là tốt hơn không sử dụng Exception bec ause là nhiều generic, thay vào đó, bắt ngoại lệ cụ thể mà bạn biết làm thế nào để xử lý:

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

Nếu mục tiêu là để ném ngoại lệ từ phương pháp foo(), bạn cần phải khai báo nó như sau:

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

Sau đó, trong chính bạn:

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

Lưu ý rằng, trừ khi foo được khai báo để ném một IOException, cố gắng để bắt một sẽ gây ra một lỗi biên dịch. Mã hóa nó bằng cách sử dụng catch (Exception e)instanceof sẽ ngăn lỗi trình biên dịch nhưng không cần thiết.

0

Có lẽ đây sẽ giúp ...

Lưu ý cách sạch hơn để bắt ngoại lệ trong ví dụ dưới đây - bạn không cần 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

Vui lòng thử đoạn mã sau:

throw new IOException("Message"); 
Các vấn đề liên quan