Что произойдет, если обе catch и finally бросить исключение?


Что произойдет, если обоих блоках catch и finally бросить исключение?

5 34

5 ответов:

Когда блок finally создает исключение, он эффективно скроет исключение, созданное из блока catch, и будет в конечном итоге брошено исключение. Поэтому важно либо регистрировать исключения при перехвате, либо убедиться, что блок finally сам не создает исключения, иначе вы можете получить исключения, которые будут подавлены и никогда не будут замечены.

Когда catch создает исключение, блок finally будет запущен, а затем завершится с исключением. Если блок finally создает исключение, блок завершится с исключением.

Выбрасывается последнее исключение.

На него уже хорошо ответил адрианбанкс, но следующий пост должен быть интересным: интересные результаты исключения: выбрасывание исключений из блока Finally

Привет Nwaman я думаю, что вы ответите неправильно я протестировал его в Windows appliaction, я нашел, если вы пишете программу, подобную приведенной ниже

try
{
    string s = "hu";
    int i = int.Parse(s);
}
catch (Exception ex)
{
    string s = "hu";
    int i = int.Parse(s);
    throw new Exception();
}
finally
{
    MessageBox.Show("hi");
}

И это не приведет в конечном итоге к тому, чтобы возразить,