Все исключения имеют Exception
в качестве базового типа.Если код в блоке try
вызывает исключение, это приведет к выполнению кода в блоке catch
соответствующего типа.Если у вас также есть более конкретный блок catch
, который совпадает, этот блок будет выполнен:
try
{
throw new FileNotFoundException();
}
catch (FileNotFoundException)
{
// this code will run
}
catch (Exception)
{
// this won't (but will if a different exception is thrown)
}
Если код в блоке catch
вызывает Exception
, он покинет catch
заблокируйте и найдите «родительский» catch
блок, который соответствует.
Обратите внимание, что перехватываются только исключения в текущем потоке - если вы запускаете и ожидаете асинхронные операции в блоке try
, вы не можетепоймать их в ожидании потока.