Tôi đang viết chương trình sử dụng java.net.URLDecoder.decode(String value, String encoding)
. Rõ ràng, phương pháp này có thể ném một UnsupportedEncodingException
, mà tôi nhận được. Nhưng tôi chỉ chuyển "UTF-8" làm bảng mã. Nó sẽ không ném ngoại lệ đó.Nhưng tôi không _want_ để bao quanh các tuyên bố với một khối try/catch!
Tôi chỉ có thể bao quanh điều darn với khối catch không có gì, nhưng sau đó trong bất kỳ trường hợp quái dị nào gây ra ngoại lệ được ném, tôi sẽ không tìm hiểu về nó. Tôi cũng không muốn tạo một chuỗi lớn gồm throws UnsupportedEncodingException
lên đến đỉnh chương trình của mình.
Tôi có thể làm gì ở đây? Tại sao tôi buộc phải đối phó với một số Ngoại lệ, trong khi những người khác (ví dụ: IllegalArgumentException
, NullPointerException
) Tôi được phép bỏ qua?
Một lưu ý phụ, ngoại lệ bạn được phép bỏ qua thường là ngoại lệ mà bạn _should_ bỏ qua cho đến khi người xử lý bắt tất cả đăng nhập và chấm dứt duyên dáng. Các ngoại lệ sử dụng như IllegalArgumentException và NullPointerException chỉ ra các lỗi và trạng thái chương trình không ổn định.Mặt khác, các loại ngoại lệ được kiểm tra không nhất thiết gây tử vong, do đó, triết lý đằng sau các ngoại lệ đã kiểm tra yêu cầu bạn làm rõ một cách rõ ràng cách bạn muốn xử lý nó (ngay cả khi điều đó có nghĩa là xác nhận lỗi) người gọi. –
@DanBryant: Đây là một trong những trường hợp điển hình. 99,99% người gọi vượt qua một hằng số ở đây. Ngoại lệ thực sự không thể xảy ra. – Joshua