Нет; это всегда должен быть аргумент типа Exception
или что-то производное от него.
Эта часть указывает, какой тип исключения - и его производные классы - перехватывается в этом блоке catch
. Например, рассмотрим:
try
{
//stuff...
}
catch (DivideByZeroException ex)
{
//do stuff with divide by zero...
}
catch (MyCustomException ex)
{
//do stuff with my custom exception...
}
catch (IOException ex)
{
//do stuff with IO Exception...
}
catch (Exception ex)
{
//handle all other exceptions
}
Порядок пунктов catch
жизненно важен, если их несколько. Они должны всегда идти от самого производного к наименьшему; Если бы я поместил последний блок Exception
сверху, он перехватил бы все исключения, а другие, более производные блоки ничего не поймали бы.
Также возможно исключить наиболее общий Exception
, чтобы позволить другим типам исключений всплывать в стеке до следующего уровня.