2013-06-25 37 views
18

Tôi đang xây dựng danh sách các chuỗi và sau đó muốn ném ngoại lệ và để giao diện người dùng xử lý danh sách và tạo thông báo lỗi cho người dùng.Vượt qua đối tượng (Danh sách <string>) như một phần của Ngoại lệ

Có cách nào để làm điều đó không?

+3

'để cho giao diện người dùng phân tích list' - Tại sao là giao diện người dùng chịu trách nhiệm về điều đó không? –

+2

@Chi tiết: Tôi nghĩ anh ấy chỉ định nghĩa danh sách thành nội dung có thể đọc được cho hộp thư – Cemafor

Trả lời

31

Ngoại lệ chứa Data thuộc tính (là từ điển). Nó có thể được sử dụng để truyền thêm thông tin:

try 
{ 
    // throw new Exception 
} 
catch(Exception e) 
{ 
    // whatever 
    e.Data["SomeData"] = new List<string>(); 
} 
+3

+1 xấu hổ về tôi - Tôi không biết về tài sản này –

+1

Cảm ơn bạn rất nhiều! – Pacman

26

Bạn có thể sử dụng Exception.Data tài sản để truyền dữ liệu tùy ý nhưng một tốt hơn (sạch) giải pháp sẽ được tạo riêng lớp ngoại lệ tùy chỉnh của bạn bắt nguồn từ ngoại lệ và thêm bất cứ điều gì thuộc tính bạn cần nó.

Mẫu mã:

public class MyException: Exception 
{ 
    public List<String> MyStrings { get; private set; } 

    public MyException(List<String> myStrings) 
    { 
     this.MyStrings = myStrings; 
    } 
} 
+4

Tôi thích ý tưởng lớp con vì tôi thích gõ [strong] mạnh mẽ hơn. – Paul

+2

gõ mạnh mẽ là tốt, nhưng lợi thế lớn là mã sạch hơn và rõ ràng hơn khi bạn cố gắng xử lý ngoại lệ (sử dụng các câu lệnh xếp tầng) –

+2

Vâng, mạnh mẽ gõ: D – Paul

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