Tôi đang đối mặt với trường hợp sử dụng mà tôi muốn khai báo trường static final
với tuyên bố khởi tạo được khai báo để ném ngoại lệ đã kiểm tra. Thông thường, nó sẽ giống như thế này:Cách xử lý bộ khởi tạo trường cuối cùng tĩnh ném trường hợp ngoại lệ đã chọn
public static final ObjectName OBJECT_NAME = new ObjectName("foo:type=bar");
Vấn đề tôi có ở đây là các nhà xây dựng ObjectName
thể ném ngoại lệ kiểm tra khác nhau, mà tôi không quan tâm đến (vì tôi muốn biết tên tôi là hợp lệ, và nó là hoàn toàn nếu nó đau khổ thảm họa trong trường hợp nó không). Trình biên dịch java sẽ không cho phép tôi bỏ qua điều này (vì nó là một ngoại lệ đã kiểm tra), và tôi không muốn sử dụng đến:
public static final ObjectName OBJECT_NAME; static{ try{ OBJECT_NAME = new ObjectName("foo:type=bar"); }catch(final Exception ex){ throw new RuntimeException("Failed to create ObjectName instance in static block.",ex); } }
Vì các khối tĩnh thực sự rất khó đọc. Có ai có một đề nghị về cách xử lý trường hợp này một cách tốt đẹp, sạch sẽ?
giải pháp cá nhân của tôi là để ném một 'CheckedExceptionsAreAPainInTheAssSometimesException', mà là một ngoại lệ thời gian chạy. Chương trình sau đó sẽ chỉ sụp đổ. – Airhead