8

Tôi biết rằng Java thi hành trình lập trình liệt kê tất cả các ngoại lệ sẽ được phương thức này ném ra và do đó tạo một cách dễ dàng để liệt kê tất cả ngoại lệ có thể ném cho người dùng mã.Liệt kê tất cả các ngoại lệ có thể được ném bằng phương thức

.NET mặt khác không có tính năng như vậy và tất cả những gì chúng tôi còn lại là tài liệu API hoặc tài liệu XML nơi ngoại lệ là đôi khi được liệt kê.

Có bất kỳ phần bổ trợ nào cho VS hiển thị ngoại lệ mà bất kỳ cuộc gọi nào có thể ném không? Với sức mạnh của sự phản chiếu, không nên nhìn qua cuộc gọi, và nhìn qua tất cả các nhánh có thể chạy qua cuộc gọi và kiểm tra xem có bất kỳ ngoại lệ .NET nào bị ném không?

+0

Và, nếu bạn thấy rằng nó ném 3 ngoại lệ khác nhau bằng cách phân tích mã nguồn, bạn sẽ đặt mệnh đề bắt trong mã cho mỗi mã như thế nào? – shahkalpesh

+1

Thậm chí không phải hầu hết các kỹ sư java bây giờ thừa nhận rằng ngoại lệ đã kiểm tra là một ý tưởng khủng khiếp? –

+2

Tôi nghĩ rằng bạn sẽ phải giải quyết vấn đề dừng để xác định mọi trường hợp mà một DivideByZeroException có thể được nâng lên (trái ngược với những bất biến lớp ngăn nó xảy ra) –

Trả lời

8

Công cụ duy nhất tôi biết là (thương mại) Exception Hunter from red-gate software.

Tuy nhiên, nó không thực sự xác định như bạn nghĩ trước. Tùy thuộc vào phiên bản của hội đồng bổ sung được sử dụng, các trường hợp ngoại lệ được ném có thể thay đổi sau thời gian xây dựng nếu phiên bản mới hơn được sử dụng mà ném các ngoại lệ khác ngoài dự kiến ​​tại thời gian xây dựng.

Trong Java, bạn có "RuntimeException" đặc biệt mà không phải được khai báo trong chữ ký phương thức (bao gồm tất cả các ngoại lệ giảm dần từ nó). Có những lý do hợp lệ mà các nhà thiết kế ngôn ngữ đã chọn không thực hiện các ngoại lệ đã kiểm tra trong C# (cho dù chúng lớn hơn các ưu điểm hay không là có thể gây tranh cãi). Một số nhà phát triển Java chỉ bọc các ngoại lệ trong các ngoại lệ thời gian chạy, hoặc họ quên sử dụng các ngoại lệ "nguyên nhân" dẫn đến mất thông tin.

Có một số tốt interview with Anders Hejlsberg về ngoại lệ đã kiểm tra và một số lý do tại sao C# không có chúng - Cảm ơn adrianbanks vì liên kết.

+2

Có một cuộc phỏng vấn tốt với Anders Hejlsberg về ngoại lệ đã kiểm tra và một số lý do tại sao C# không có chúng ở đây: http://www.artima.com/intv/handcuffs.html – adrianbanks

+0

@adrianbank, tôi biết, nhưng tôi không có liên kết trong tầm tay. Cảm ơn bạn đã đăng bài! – Lucero

+0

Bài viết tuyệt vời, cung cấp cho một cái nhìn tốt về kiểm tra exeptions cho những người trong chúng ta những người đã không bao giờ thực sự dường như họ trong bất kỳ sử dụng thực tế. –

2

Điều duy nhất tôi gặp phải là thực hiện điều này là Exception Hunter, nhưng đó là công cụ thương mại mà bạn sẽ phải mua.

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