Обычное поведение VS заключается в отображении желтой ошибочной строки:
int i = 1;
switch (i)
{
default:
throw new NotImplementedException(); //this will be yellow
}
Однако довольно часто я был свидетелем того, что неправильная линия окрашена, как в этом примере:
int i = 1;
switch (i)
{
default:
if (i==1)
throw new NotImplementedException();
break; i = 1; //this line is displayed in yellow, which makes no sense
}
Хотя я понимаю некоторые различия между этими двумя фрагментами (в первой ситуации строка throw ...) является последней исполняемой строкой метода, поэтому для кода, следующего за этим, не генерируется IL, поэтому это последняя возможная строка для «отображения» исключения), мне интересно, пока VS не сможет отобразить исключение в правильной строке во втором фрагменте.
Кто-нибудь намекает на причину этого странного поведения? Несмотря на то, что я знал об этом предупреждении, время от времени я тратил несколько минут на отладку не той строки.