2010-10-19 31 views
5

Lập trình Java trong Eclipse, tôi thường phải đối phó với các ngoại lệ. Trong C# với VisualStudio có vẻ như tôi không thể nói "ném ngoại lệ" trên một phương pháp ... Sau rất nhiều mã hóa tôi tìm thấy rất nhiều trường hợp ngoại lệ, và đã bắt chúng như tôi thấy chúng trong quá trình thử nghiệm. Tôi muốn bị buộc phải xử lý chúng, vì vậy mà VisualStudio có thể nói rằng ở đây bạn cần một nắm bắt hoặc tôi sẽ không để cho bạn đi trên :) Điều này có thể?Không có lực lượng xử lý ngoại lệ?

Cảm ơn

Trả lời

8

No. C# không bắt buộc bạn xử lý ngoại lệ. Đây là một quyết định thiết kế quan trọng về một phần của các nhà thiết kế ngôn ngữ.

Để biết chi tiết về lý do, hãy xem The Trouble With Checked Exceptions, trong đó Anders Hejlsberg thảo luận tại sao chúng không phải là một phần của C#.

+0

Ồ, quá tệ :) Cảm ơn bạn đã trả lời! – Johannes

+0

Mà, mặc dù bị cáo buộc là dễ xảy ra lỗi, cho phép một lập trình viên tự do tuyên bố "Tôi biết tôi đang làm gì" –

+0

@Johannes: Trước khi bạn nghĩ về điều này là "xấu", tôi đã đọc cuộc phỏng vấn đó. Tôi đã từng nghĩ rằng đây là một lỗ hổng trong C#, nhưng tôi đã hoàn toàn chuyển đổi để thấy điều này như là một "chuyên nghiệp" ... –

0

Không, không thể.

Điều bạn có thể làm là tra cứu phương pháp thư viện .NET bạn đang thực hiện trong MSDN: các ngoại lệ được mong đợi sẽ được ném theo phương thức được ghi lại ở đó. Sau đó, bạn có thể quyết định cái nào bạn muốn bắt và cái nào bạn không muốn xử lý ở đây.

+0

Không có cách nào tốt hơn là tìm tất cả trong tài liệu? Nên có một số khả năng để làm điều này trong VisualStudio nếu bạn hỏi tôi :) Một số loại "nhấp chuột phải -> ngoại lệ có thể rõ ràng có thể được ném" :) – Johannes

+0

@Johannes: Đúng, điều đó sẽ tốt đẹp, nhưng kể từ ngữ cảnh- trợ giúp nhạy cảm trong Visual Studio là khá tốt (chỉ cần nhấn F1 trong khi có con trỏ trên tên phương thức), tìm kiếm tài liệu đi khá nhanh chóng. – Heinzi

0

Bạn có thể sử dụng various tools để tìm các ngoại lệ. Ngoài ra còn có điều này cho .NET 4 được gọi là Hợp đồng mã giúp bạn thực thi các điều kiện trước/sau và có thể tránh một số ngoại lệ.

2

Không có ngoại lệ nào được kiểm tra trong C#. Và lý do khá đơn giản:

1) chúng có xu hướng không đạt được mục đích đó vì không phải tuân theo thực hành được đề nghị hoặc xử lý chúng một cách rõ ràng hoặc truyền chúng. Thay vào đó những gì xảy ra là chúng được "ăn" bởi các nhà phát triển ở giữa ngăn xếp dev.
2) vì chúng là một cách tự nhiên một phần của tài liệu chứ không phải là mã thực thi, họ nên đi vào tài liệu và không lộn xộn bề mặt đang

3) C#/tài liệu khung trong các công cụ dev là nơi lý tưởng cho các ví dụ tài liệu. Chơi xung quanh với visual studio Object browser, duyệt đến phương thức và bạn sẽ thấy chúng được đề cập trong khung bên dưới.