Po przejrzeniu większości odpowiedzi tutaj, chciałbym dodać kilka myśli.
Poleganie na komentarzach do dokumentacji XML i oczekiwanie, że inni będą na nich polegać, to kiepski wybór. Większość kodu C #, z którym się spotkałem, nie dokumentuje metod całkowicie i spójnie z komentarzami dokumentacji XML. A potem jest większy problem, w jaki sposób bez sprawdzonych wyjątków w C # można udokumentować wszystkie wyjątki, które metoda generuje, aby użytkownik interfejsu API wiedział, jak obsługiwać je wszystkie indywidualnie? Pamiętaj, że wiesz tylko o tych, które rzucasz sobie za pomocą słowa kluczowego throw w swojej implementacji. Interfejsy API, których używasz w implementacji metody, mogą również generować wyjątki, o których nie wiesz, ponieważ mogą nie być udokumentowane i nie obsługujesz ich w swojej implementacji, więc wybuchną w obliczu wywołującego metoda. Innymi słowy,
Andreas połączył wywiad z Andersem Hejlsbergiem w odpowiedziach tutaj na temat tego, dlaczego zespół projektowy C # zdecydował się na sprawdzone wyjątki. Ostateczna odpowiedź na pierwotne pytanie jest ukryta w tym wywiadzie:
Programiści chronią swój kod, pisząc ostatecznie wszędzie try, więc wycofają się poprawnie, jeśli wystąpi wyjątek, ale tak naprawdę nie są zainteresowani obsługą wyjątków.
Innymi słowy, nikogo nie powinno interesować, jakiego rodzaju wyjątków można się spodziewać w przypadku konkretnego interfejsu API, ponieważ zawsze będziesz je łapać wszędzie. A jeśli naprawdę chcesz obchodzić się z określonymi wyjątkami, to jak sobie z nimi poradzić, zależy od ciebie, a nie od kogoś, kto definiuje sygnaturę metody za pomocą czegoś takiego jak słowo kluczowe Java throws, wymuszając określoną obsługę wyjątków u użytkownika API.
-
Osobiście jestem tu rozdarty. Zgadzam się z Andersem, że zaznaczenie wyjątków nie rozwiązuje problemu bez dodania nowych, innych problemów. Podobnie jak w przypadku komentarzy do dokumentacji XML, rzadko widzę kod C # zawierający wszystko, co jest opakowane w bloki try last. Wydaje mi się, że to rzeczywiście jedyna opcja i coś, co wydaje się dobrą praktyką.