2009-05-06 28 views
200

Cụ thể, có phân lớp tiêu chuẩn Exception được sử dụng trong các trường hợp này không?Ngoại lệ tiêu chuẩn để ném trong Java cho các hoạt động không được hỗ trợ/triển khai là gì?

+0

Có phù hợp khi sử dụng khi một lớp không thực hiện phương pháp, nhưng các lớp con có thể làm như vậy? Nói cách khác, để có một phương thức trừu tượng trong một lớp không trừu tượng. – osa

+0

@SergeyOrshanskiy Thật hữu ích khi nào, tùy thuộc vào cách bạn xây dựng một đối tượng, bạn cần phải tạo một lớp ẩn danh thực hiện một giao diện để khởi tạo biến thành viên, nhưng bạn không muốn nó được sử dụng. Nếu bạn đặt nó thành 'null' và bạn vô tình sử dụng nó (hoặc ai đó đã làm), bạn sẽ nhận được' NullPointerExceptions' mà ít rõ ràng hơn 'UnsupportedOperationExceptions' trong trường hợp này. Chỉ là một ví dụ. – 2rs2ts

Trả lời

291

java.lang.UnsupportedOperationException

Bị đẩy để cho biết rằng các hoạt động yêu cầu không được hỗ trợ.

+0

bỏ qua điều này vô lý "đây là một phần của bộ sưu tập khuôn khổ" nó là trong gói java.lang.', JavaDoc một cách rõ ràng tuyên bố đây là những gì nó được cho. –

+3

@JarrodRoberson OK, tuyên bố đó thực sự cần được xóa khỏi tài liệu lớp học trong trường hợp đó. Ngoại lệ dường như được sử dụng bởi các gói khác. Tôi đoán nếu Oracle làm như vậy, thì chúng ta nên vậy. Tôi sẽ gửi báo cáo lỗi. –

8

Nếu bạn muốn biết thêm chi tiết và decription tốt hơn, bạn có thể sử dụng NotImplementedException từ commons-lang

Cảnh báo: Có sẵn trước khi phiên bản 2.6 và sau khi phiên bản 3.2, chỉ.

164

biệt giữa hai trường hợp, bạn đặt tên:

  • Để chỉ ra rằng hoạt động yêu cầu không được hỗ trợ và nhiều khả năng sẽ không bao giờ, ném ra một UnsupportedOperationException.

  • Để chỉ ra các hoạt động yêu cầu đã chưa thực hiện được, lựa chọn giữa này:

    1. Sử dụng NotImplementedException từ apache commons-lang đó đã có sẵn trong commons-sử dụng LANG2 và đã được tái bổ sung vào commons-lang3 trong phiên bản 3.2.

    2. Triển khai NotImplementedException của riêng bạn.

    3. Ném UnsupportedOperationException với một thông báo như "Chưa triển khai,".

+0

Tôi sẽ làm điều này, bởi vì nó có vẻ hợp lý với tôi. "Tuy nhiên" hoặc "không bao giờ" được chỉ ra bởi Ngoại lệ cho một ý tưởng về cách phản ứng về điều này. – sschrass

+1

#s 1 hoặc 2 rất thích hợp hơn trong thực tế.# 3 không nắm bắt được sự khác biệt ngữ nghĩa giữa "không được hỗ trợ" và "không được triển khai", nhưng có một lớp riêng biệt giúp dễ dàng thực hiện tìm kiếm nhanh hơn để xác minh rằng bạn chưa quên triển khai bất cứ điều gì bạn nên trước khi cam kết. –

4

Nếu bạn tạo một hàm trong NetBeans mới (chưa thực hiện), sau đó nó sẽ tạo ra một cơ thể phương pháp với các tuyên bố sau:

throw new java.lang.UnsupportedOperationException("Not supported yet."); 

Vì vậy, tôi khuyên bạn nên sử dụng UnsupportedOperationException .

Các vấn đề liên quan