Exception

Duy Văn | 12/03/2025


Về cơ bản exception của Java rất giống bên Python, phía python là try - except, Java là try - catch


try {
  // Code that may raise exception
} catch (Exception e) {
  // Code to handle exception
}

Exception Class

Exception class là class cha của tất cả các exception trong Java, nó là class abstract nên không thể tạo instance của nó, mà chúng ta phải tạo instance của các class con của nó như ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException,…

Để sử dụng chúng thì mục đích của chúng là để bắt đúng exception mà chúng ta muốn, và nếu không bắt được thì chúng ta có thể bắt exception cha của nó là Exception


try {
  int a = 5 / 0;
} catch (ArithmeticException e) {
  System.out.println("Cannot divide by zero");
} catch (Exception e) {
  System.out.println("Something went wrong");
}

Nó sẽ đi từ trên đi xuống cho đến khi gặp được đúng exception mà chúng ta muốn bắt, nếu không gặp được thì sẽ bắt exception cha của nó là Exception

Ngoài ra chúng ta có thể có một block finally để chạy code sau khi try - catch kết thúc


try {
  int a = 5 / 0;
} catch (ArithmeticException e) {
  System.out.println("Cannot divide by zero");
} catch (Exception e) {
  System.out.println("Something went wrong");
} finally {
  System.out.println("The 'try catch' is finished");
}

codeblock này chắc chắn sẽ được chạy dù có exception hay không

Throw

Throw - throw là một keyword để chúng ta chủ động ném ra một exception, chúng ta có thể ném ra exception bất kỳ lúc nào, và nó sẽ dừng chương trình ngay lập tức, chúng ta có thể truyền vào thông báo lỗi tuỳ ý


try {
  throw new ArithmeticException("Cannot divide by zero");
} catch (ArithmeticException e) {
  System.out.println(e.getMessage());
}

Để xem tất cả các lỗi và exception, xem tại đây