Как найти, какие части кода C# могут выдавать исключения - PullRequest
0 голосов
/ 18 февраля 2020

Есть ли способ заставить Visual Studio сообщать мне, какие части моего кода могут вызывать исключения? Что-то вроде предупреждений компилятора, которые могут быть подавлены, но вместо этого он предупреждает меня, что какая-то строка может вызвать исключение, если она не окружена try и catch.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2020

Нет, в VS такой функциональности нет.

C# (и. Net в целом) не поддерживает какие-либо аннотации для указания "метода", генерирующего интересного исключение "(в отличие от Java, см. Почему исключения не регистрируются. NET? ). В результате нет никакого способа иметь общий инструмент, который позволил бы вам знать, что какое-то «интересное» исключение (IOException, как вы предложили) может быть выдано из любого данного метода.

В некоторых случаях VS / C# компилятор может помочь. То есть в C# 8 NRE фактически имеет частичную специальную обработку - «обнуляемый ссылочный тип» , который позволяет компилятору знать, ожидает ли код null или нет, и предупреждает во время компиляции, если null передано там, где оно есть не предполагается.

Примечание: документация XML (которая упоминается в комментариях как источник подсказок по интеллигентности) не является частью кода, и нет требований к ее правильности / полноте. Большая часть кода не имеет никакой полезной XML документации, а документация не обязательна во время компиляции. Поэтому, хотя он может служить основой для какого-либо инструмента, я не верю, что VS использует его для подсветки любого кода.

1 голос
/ 18 февраля 2020

ReSharper обычно делает это. Это добавляет некоторые предупреждения для возможных исключений. Если вы не хотите использовать его, найдите похожие продукты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...