Skip to main content

Java Throws exception - Khai bao ngoại lệ trong Java

Từ khóa throws trong java được sử dụng để khai báo một ngoại lệ. Nó thể hiện thông tin cho lập trình viên rằng có thể xảy ra một ngoại lệ, vì vậy nó là tốt hơn cho các lập trình viên để cung cấp các mã xử lý ngoại lệ để duy trì luồng bình thường của chương trình.

Exception Handling chủ yếu được sử dụng để xử lý ngoại lệ checked. Nếu xảy ra bất kỳ ngoại lệ unchecked như NullPointerException, đó là lỗi của lập trình viên mà anh ta không thực hiện kiểm tra trước khi code được sử dụng.

Mục đích của throws:

  • Ngoại lệ checked có thể được ném ra ngoài và được xử lý ở một hàm khác.
  • Cung cấp thông tin cho caller của phương thức về các ngoại lệ.

Cú pháp:

ReturnType methodName() throws ExceptionClassName {  
    // method code
}

Ví dụ:

import java.io.IOException;

class Testthrows1 {

    void m() throws IOException {
        throw new IOException("device error"); //checked exception  
    }
    void n() throws IOException {
        m();
    }
    void p() {
        try {
            n();
        } catch (Exception e) {
            System.out.println("exception handled");
        }
    }
    public static void main(String args[]) {
        Testthrows1 obj = new Testthrows1();
        obj.p();
        System.out.println("normal flow...");
    }
}

Kết quả:

exception handled
normal flow...

Sự khác nhau giữa Throw và Throws trong java

Có một số điểm khác nhau giữa từ khóa throwthrows trong java được mô tả trong bảng dưới đây:

No. throw throws
1) Từ khóa throw trong java được sử dụng để ném ra một ngoại lệ rõ ràng. Từ khóa throws trong java được sử dụng để khai báo một ngoại lệ.
2) Ngoại lệ checked không được truyền ra nếu chỉ sử dụng từ khóa throw. Ngoại lệ checked được truyền ra ngay cả khi chỉ sử dụng từ khóa throws.
3) Sau throw là một instance. Sau throws là một hoặc nhiều class.
4) Throw được sử dụng trong phương thức. Throws được khai báo ngay sau dấu đóng ngoặc đơn của phương thức.
5) Bạn không thể throw nhiều exceptions. Bạn có thể khai báo nhiều exceptions, Ví dụ:
public void method()throws IOException,SQLException.