2013-03-11 25 views
6

Vì vậy, một trong những giới thiệu phương pháp diễn ra như sau:Ném một UnsupportedOperationException

công BasicLinkedList addToFront (T dữ liệu) hoạt động này không hợp lệ cho một danh sách được sắp xếp. Một UnsupportedOperationException sẽ được tạo ra bằng cách sử dụng thông báo "Thao tác không hợp lệ cho danh sách được sắp xếp".

Mã của tôi đi một cái gì đó như thế này:

public BasicLinkedList<T> addToFront(T data) { 
    try { 
     throw new UnsupportedOperationException("Invalid operation for sorted list."); 
    } catch (java.lang.UnsupportedOperationException e) { 
     System.out.println("Invalid operation for sorted list."); 
    } 
    return this; 
} 

Đây có phải là đúng cách để làm điều này? Tôi vừa in ra thông báo bằng cách sử dụng println() nhưng có cách nào khác để tạo thư không?

+1

Tốt hơn để sử dụng System.out.println (e.getMessage ()); trong vòng bắt. – Java42

+0

Bạn ném một ngoại lệ và bắt nó trong Catch Block! Bạn không bắt được nó. –

Trả lời

14

Bạn không muốn để bắt ngoại lệ trong phương pháp của bạn - Vấn đề là để cho người gọi biết rằng các hoạt động không được hỗ trợ:

public BasicLinkedList<T> addToFront(T data) { 
    throw new UnsupportedOperationException("Invalid operation for sorted list."); 
} 
+0

Nhưng điều này sẽ ném nó cho bất kỳ dữ liệu đến. Bạn cần phải chọn ra dữ liệu kiểu SortedList (xem câu trả lời của tôi). – DigCamara

+0

Ok, đọc nhận xét của CoderNinja, đây có phải là SortedLinkedList một lớp con của BasicLinkedList không? Nếu vậy, sau đó phương pháp overriden trong SortedLinkedList nên ném exception.This không có gì để làm với các loại T. – Jason

+0

Bạn đang phải. Tôi đã thay đổi câu trả lời của mình để phản ánh nhận xét. – DigCamara

2

Bạn có thể viết lại mã của bạn để được như thế này

public BasicLinkedList<T> addToFront(T data) throws UnsupportedOperationException { 
    if (this instanceof SortedList) { 
     throw new UnsupportedOperationException("Invalid operation for sorted list."); 
    }else{ 
     return this; 
    } 
} 

Đó cơ bản hoàn thành những gì bạn đang yêu cầu.

+0

Vâng ý tưởng là tôi có một lớp cơ bảnLinkedList có phương thức addToFront nhưng trong lớp linkedLinkedList của tôi, phương thức add thêm nút vào vị trí thích hợp dựa trên phân loại. Vì vậy, addToFront không thể được gọi là có khả năng sẽ làm hỏng SortList. Đối với những gì tôi muốn thực hiện chỉ là phụ thuộc vào những gì câu hỏi được yêu cầu. Tôi không chắc làm thế nào tôi nên được tạo ra các tin nhắn (thông qua println? Hoặc thông qua ngoại lệ chính nó như khi u nhận được tất cả những crap đỏ). – CoderNinja

+0

Xin lỗi. Đã không đọc câu hỏi của bạn đúng cách lần đầu tiên. – DigCamara

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