Обработка исключений - механизм, предназначенный для описания реакции программы на ошибки во время выполнения программыю.
Используется оператор try
и catch
. Возможно использование нескольких операторов catch
, при возникновении исключения программа попадет в тот блок catch
, тип аргумента которого совпадает с типом генерируемого исключения. В случае если исключение не возникло, все блоки catch
игнорируются. Также существует блок finally
, который будет вызван независимо от того, было ли сгененировано исключение.
Также интересный момент:
при наследовании исключений, блоки catch следует располагать от самого производного от всех до базового.
class ExceptionA : Exception {}
class ExceptionB : ExceptionA {}
Пример:
try (something)
{
// some code //
}
catch (Exception e) // 1
{
}
catch (ExceptionA e) // 2
{
}
catch (ExceptionB e) // 3
{
}
Так как и ExceptionA
и ExceptionB
могут быть приведены к типу Exception
, при расположении блоков catch
таким образом как в примере выше, при возникновении исключения типа ExceptionA
или ExceptionB
, программа не выполнит блоки 2 и 3 соответственно, а попадет в блок 1.