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.
Cú pháp từ khóa throws:
return_type method_name() throws exception_class_name {
/ /method code
}
Chỉ những ngoại lệ checked nên được khai báo bởi vì ngoại lệ unchecked: nằm trong sự kiểm soát của bạn. Còn error nằm ngoài sự kiểm soát của bạn, ví dụ bạn sẽ không thể làm được bất kì điều gì khi các lỗi VirtualMachineError
hoặc StackOverflowError
xảy ra.
Lợi ích của từ khóa throws trong java
- 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ệ.
Ví dụ về từ khóa throws trong java
import java.io.IOException;
public class TestThrows1 {
void m() throws IOException {
throw new IOException("Loi thiet bi");// checked exception
}
void n() throws IOException {
m();
}
void p() {
try {
n();
} catch (Exception e) {
System.out.println("ngoai le duoc xu ly");
}
}
public static void main(String args[]) {
TestThrows1 obj = new TestThrows1();
obj.p();
System.out.println("luong binh thuong...");
}
}
ngoai le duoc xu ly
luong binh thuong...
Trường hợp xử lý ngoại lệ với try/catch
import java.io.IOException;
class M {
void method() throws IOException {
throw new IOException("Loi thiet bi");
}
}
public class TestThrows2 {
public static void main(String args[]) {
try {
M m = new M();
m.method();
} catch (Exception e) {
System.out.println("Ngoai le duoc xu ly");
}
System.out.println("Luong binh thuong...");
}
}
Ngoai le duoc xu ly
Luong binh thuong...
Khai báo throws ngoại lệ
import java.io.IOException;
class M {
void method() throws IOException {
System.out.println("Thiet bi dang hoat dong tot");
}
}
public class TestThrows2 {
public static void main(String args[]) throws IOException {
M m = new M();
m.method();
System.out.println("Luong binh thuong...");
}
}
Thiet bi dang hoat dong tot
Luong binh thuong...
import java.io.IOException;
class M {
void method() throws IOException {
throw new IOException("Thiet bi");
}
}
public class TestThrows2 {
public static void main(String args[]) throws IOException {
M m = new M();
m.method();
System.out.println("Luong binh thuong...");
}
}
Exception in thread "main" java.io.IOException: Thiet bi