Lớp Throwable là superclass của tất cả errors và exceptions trong Java. Các đối tượng là instance của lớp này được ném bởi Java Virtual Machine hoặc có thể được ném bởi câu lệnh throw. Tương tự, lớp này hoặc một trong các subclass của nó có thể là kiểu tham số trong mệnh đề catch.
Instance của hai subclass Error và Exception được dùng để chỉ ra rằng các tình huống ngoại lệ đã xảy ra, các instance này được tạo trong ngữ cảnh của tình huống ngoại lệ để bao gồm thông tin liên quan.
Các phương thức exception thường dùng của lớp Throwable
- public String getMessage(): trả về chuỗi thông điệp về exception.
- public Throwable getCause(): trả về nguyên nhân của exception. Sẽ trả về null nếu nguyên nhân không biết hoặc không tồn tại.
- public String toString(): trả về mô tả ngắn gọn của exception.
- public void printStackTrace(PrintStream s): in mô tả ngắn gọn của exception (dùng toString()) + stack trace cho exception này trên error output stream (System.err).
Ví dụ
class ArithmaticTest {
public void division(int num1, int num2) {
try {
//java.lang.ArithmeticException here.
System.out.println(num1/num2);
//catch ArithmeticException here.
} catch(ArithmeticException e) {
//print the message string about the exception.
System.out.println("getMessage(): " + e.getMessage());
//print the cause of the exception.
System.out.println("getCause(): " + e.getCause());
//print class name + ": " + message.
System.out.println("toString(): " + e.toString());
System.out.println("printStackTrace(): ");
//prints the short description of the exception + a stack trace for this exception.
e.printStackTrace();
}
}
}
public class Test {
public static void main(String args[]) {
//creating ArithmaticTest object
ArithmaticTest test = new ArithmaticTest();
//method call
test.division(20, 0);
}
}Kết quả
getMessage(): / by zero getCause(): null toString(): java.lang.ArithmeticException: / by zero printStackTrace(): java.lang.ArithmeticException: / by zero at ArithmaticTest.division(Test.java:5) at Test.main(Test.java:27)