Учитывая этот драгоценный камень кода:
class Program
{
private static bool IsAdmin = true;
static void Main(string[] args)
{
if (!IsAdmin)
{
throw new Exception();
}
try
{
var x = 2342342;
var y = 123132;
}
catch (Exception)
{
throw;
}
}
}
Учитывая, что this.IsAdmin
дает true - я бы ожидал, что отладчик не будет вводить этот оператор if. На самом деле это происходит - и он срабатывает над броском, но на самом деле не бросает!
Теперь это происходит только тогда, когда у вас есть исключение внутри оператора if, за которым следует блок try/catch, на Visual Studio 2013, ориентированный на .NET Framework 4, 64 бит, "Предпочитаете 32 бит", не установлен.
Я подтвердил эту странность коллегами на разных машинах. Шаг, хотя следующий код и отладчик, похоже, войдут в ветку if, но исключение не будет выбрано:
Я работаю в режиме отладки, я попытался несколько раз собрать и очистить проект.
Может кто-нибудь объяснить, почему это происходит?