2011-10-10 12 views
5

Tôi muốn biết nếu tạo một ngoại lệ với nhiều tham số trong một hàm tạo (khác với lệnh có thể ném, chuỗi) hoặc nếu thực hành này là xấu?Ngoại lệ với nhiều tham số trong hàm dựng

Tại sao tôi cần ngoại lệ với nhiều thông số, tốt, giả sử tôi đang phân tích ma trận và khi có lỗi, tôi sẽ tăng ngoại lệ với vị trí. Tôi muốn đưa ra một thông báo lỗi rõ ràng trong trường hợp ngoại lệ, và tôi cũng muốn sử dụng quốc tế hóa, có nghĩa là, các thông điệp bằng các ngôn ngữ khác nhau.

Ví dụ, các thông điệp có thể là:

Có một lỗi ở vị trí 4, 5.
Hubo un problema en la Fila 4 con columnA 5.

Như bạn có thể thấy, văn bản khác nhau cho cả hai thư và các giá trị quan trọng đối với thư để mô tả.

cách tiếp cận của tôi là một cái gì đó như thế này:

public class MatrixException extends Exception { 
    int x; 
    int y; 
    public MatrixException (int x, int y){ 
    this.x = x; 
    this.y = y; 
} 
public String getMessage(){ 
    return Messages.getString("MatrixException.Message1") + this.x 
     Messages.getString("MatrixException.Message2") + this.y 
     Messages.getString("MatrixException.Message3"); 
} 
} 

(Lớp Messages thực hiện các lớp ResourceBundle)

Với loại ngoại lệ, tôi có thể tạo ra một thông điệp mô tả bằng ngôn ngữ tương ứng, tuy nhiên tôi chưa bao giờ thấy Ngoại lệ với các tham số khác với Chuỗi và Có thể ném.

Tôi đã cố gắng tìm thông tin về cách viết một hệ thống phân cấp ngoại lệ được xác định rõ, nhưng không có nhiều tài liệu và không có gì về các nhà xây dựng.

Bạn nghĩ gì về cách tiếp cận của tôi?

+0

Làm thế nào để thử và xem nó có hoạt động không? SO nói chung là cho các câu hỏi cụ thể về các vấn đề cụ thể, chứ không phải là suy nghĩ nhàn rỗi về những gì-ifs. –

Trả lời

0

Tôi thích nó. Lựa chọn khác của bạn sẽ là định dạng chuỗi và sử dụng phương thức khởi tạo bình thường Exception, nhưng tôi nghĩ rằng những gì bạn có là tốt.

0

Chắc chắn. Nếu có các tham số/trường bổ sung trong lớp ngoại lệ tùy chỉnh của bạn sẽ giúp dễ dàng hơn trong việc đánh giá một vấn đề nếu ngoại lệ được ném, hãy bỏ qua.

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