Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để tạo một ngoại lệ không được chọn tùy chỉnh trong Java?

Chúng tôi có thể tạo tùy chỉnh bỏ chọn ngoại lệ bằng cách mở rộng RuntimeException trong Java.

Bỏ chọn ngoại lệ kế thừa từ Lỗi hoặc RuntimeException lớp. Nhiều lập trình viên cảm thấy rằng chúng tôi không thể xử lý những ngoại lệ này trong chương trình của mình vì chúng đại diện cho loại lỗi mà chương trình không thể khôi phục được trong khi chương trình đang chạy. Khi một ngoại lệ không được kiểm tra được ném ra, nó thường là do sử dụng sai mã , chuyển giá trị rỗng hoặc nếu không thì đối số không chính xác .

Cú pháp

public class MyCustomException extends RuntimeException {
   public MyCustomException(String message) {
      super(message);
   }
}

Triển khai Ngoại lệ Không được Kiểm tra

Việc triển khai một ngoại lệ không được kiểm tra tùy chỉnh gần tương tự như một ngoại lệ đã được kiểm tra trong Java. Sự khác biệt duy nhất là một ngoại lệ không được chọn phải mở rộng RuntimeException thay vì Exception.

Ví dụ

public class CustomUncheckedException extends RuntimeException {
   /*
   * Required when we want to add a custom message when throwing the exception
   * as throw new CustomUncheckedException(" Custom Unchecked Exception ");
   */
   public CustomUncheckedException(String message) {
      // calling super invokes the constructors of all super classes
      // which helps to create the complete stacktrace.
      super(message);
   }
   /*
   * Required when we want to wrap the exception generated inside the catch block and rethrow it
   * as catch(ArrayIndexOutOfBoundsException e) {
      * throw new CustomUncheckedException(e);
   * }
   */
   public CustomUncheckedException(Throwable cause) {
      // call appropriate parent constructor
      super(cause);
   }
   /*
   * Required when we want both the above
   * as catch(ArrayIndexOutOfBoundsException e) {
      * throw new CustomUncheckedException(e, "File not found");
   * }
   */
   public CustomUncheckedException(String message, Throwable throwable) {
      // call appropriate parent constructor
      super(message, throwable);
   }
}