Почему C# так генерирует исключения?

137
30 января 2020, 17:30

Я буду именовать блоки когда по номеру, который они выводят. Как я понимаю, в блоке '2', мы явно не указываем тип исключения, то есть результат работы программы должен быть 1 2 3 5 6, а на самом деле имеем 1 2 3 4 6. Почему так? Исключение из блока '1' мы уже обработали в '2', а в '2' у нас уже не NullReferenceException, а просто throw.

    static void Main(string[] args)
    {
        try
        {
            try
            {
                System.Console.WriteLine("1");
                throw new NullReferenceException();
            }
            catch
            {
                System.Console.WriteLine("2");
                throw; // интересует это
            }
            finally
            {
                System.Console.WriteLine("3");
            }
        }
        catch(NullReferenceException ex)
        {
            System.Console.WriteLine("4");
        }
        catch(Exception ex)
        {
            System.Console.WriteLine("5");
        }
        finally
        {
            System.Console.WriteLine("6");
        }
    }
Answer 1

Throw перебрасывает исключение, пойманное в catch так, как будто бы catch его не поймал. В вашем случае throw бросает то же исключение (тот же объект), что был пойман - т.е. брошенный выше NullReferenceException.

READ ALSO
Как правильно использовать entity framework?

Как правильно использовать entity framework?

Как правильно использовать entity framework? Нужно создавать DbContext для каждого вызова, или создать один раз и использовать всё время жизни приложения?

178
Вычисление возраста [закрыт]

Вычисление возраста [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском»

155
Строка подключения MS SQL Server в локальной сети

Строка подключения MS SQL Server в локальной сети

Как должна выглядеть строка подключения к MS SQL Server 2008 при условии, что экземпляр MS SQL Server установлен на одном из удалённых компьютеров, расположенных...

154
Юнит тесты Entity Framework

Юнит тесты Entity Framework

Хочу протестировать сервисы работы с БД через EF

140