Có một phương pháp get(sql)
(Tôi không thể sửa đổi nó). Phương thức này trả về MyObjects và nó phải ở trong try catch block vì JqlParseException
có thể ở đó. Mã của tôi là:Ném ngoại lệ tùy chọn trong Java8
String sql = something;
try{
MyObject object = get(sql);
} catch(JqlParseException e){
e.printStackTrace();
} catch(RuntimeException e){
e.printStackTrace();
}
Tôi muốn loại bỏ cố gắng nắm bắt và sử dụng Optional
lớp, tôi đã cố gắng:
MyObject object = Optional.ofNullable(get(sql)).orElseThrow(RuntimeException::new);
nhưng lực lượng IDE có cố gắng nắm bắt quá. Và cho:
MyObject object = Optional.ofNullable(get(sql)).orElseThrow(JqlParseException::new));
là lỗi (trong IDE) The type JqlParseException does not define JqlParseException() that is applicable
. Có cách nào để tránh thử bắt khối và sử dụng tùy chọn không?
Chuyển đến định nghĩa 'get', xem nếu nó nói' ném JqlException'. Nếu có, bạn phải sử dụng try ... catch. – Sweeper
Có vẻ như khá nhiều người đang cân nhắc Tùy chọn là cấu trúc luồng điều khiển NextGeneration ™. Đó sẽ không xảy ra. Tùy chọn, cũng như các đối tác nguyên thủy của nó, vốn dĩ không thể xử lý loại tác vụ này. Nó không được thiết kế để thay thế hoàn toàn các cấu trúc dòng điều khiển như if-else hoặc try-catch. Thay vào đó, nó tập trung vào việc loại bỏ các kiểm tra vô giá trị vô tận này. – glee8e
@ glee8e * ['Tùy chọn'] tập trung vào việc loại bỏ các kiểm tra vô giá vô hạn đó. * Tôi sẽ cụ thể hơn. Nhiều người sẽ nhảy đến kết luận rằng họ nên thay thế tất cả các lần xuất hiện của 'null' bằng' Tùy chọn', điều này trái với ý định của các nhà thiết kế 'Optional'. – Jubobs