2014-09-02 26 views
5

Có thể nêu rõ sự khác biệt giữa ném và ném trong xử lý ngoại lệ Java với một ví dụ không? Tôi đã thử googling nhưng không thể đi đến kết luận. Xin vui lòng giúpSự khác biệt giữa ném và ném trong Java?

+2

đó là tiếng Anh thông thường. Phải không? –

+0

@suresh atta rất hài hước – user3527594

Trả lời

32
  1. throws khoản được sử dụng để khai báo một ngoại lệ và throw từ khóa được sử dụng để ném một ngoại lệ rõ ràng.

  2. Nếu chúng ta thấy cú pháp khôn ngoan thì throw được theo sau bởi một biến mẫu và throws được theo sau bởi tên lớp ngoại lệ.

  3. Từ khóa throw được sử dụng bên trong phương pháp cơ thể để gọi một ngoại lệ và throws khoản được sử dụng trong phương pháp kê khai (ký tên).

Ví dụ

ném

throw new Exception("You have some exception") 
throw new IOException("Connection failed!!") 

ném

public int myMethod() throws IOException, ArithmeticException, NullPointerException {} 
  1. Bạn có thể không khai báo mult ngoại lệ nhiều với throw. Bạn có thể khai báo nhiều ngoại lệ, ví dụ: public void method() ném IOException, SQLException.

  2. ngoại lệ được kiểm tra không thể được truyền với throw chỉ vì nó được sử dụng một cách rõ ràng để ném một ngoại lệ cụ thể. ngoại lệ đã kiểm tra có thể được nhân giống với throws.

ngoại lệ tuyên truyền: Một ngoại lệ truyền từ phương pháp phương pháp, tăng các cuộc gọi stack, cho đến khi nó bắt. Vì vậy, nếu a() gọi b(), gọi c(), gọi d(), và nếu d() ném một ngoại lệ, ngoại lệ sẽ lan truyền từ d đến c thành b, trừ khi một trong các phương thức này bắt sự ngoại lệ. what is exception propagation?

+1

cảm ơn câu trả lời – user3527594

+1

Bằng cách sử dụng Từ khóa Throw trong java bạn không thể ném nhiều hơn một ngoại lệ nhưng sử dụng ném bạn có thể khai báo nhiều ngoại lệ. – hitesh141

5

throw sử dụng cho ném thực tế Exceptionthrows tuyên bố tại phương pháp nó có thể ném Exception.

public int findMax(int[] array) throws Exception{ 
    if(array==null) 
     throw new NullPointerException(...); 
    ... 
} 
+1

cảm ơn ... vì lỗi trỏ –

0
public void someMethod(List<Foo> someList) throws SomeException { 
    if (someList.isEmpty()) throw new SomeException(); 
} 
Các vấn đề liên quan