Обработка исключений - механизм, предназначенный для описания реакции программы на ошибки во время выполнения программыю.
Используется оператор 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.