Обработка исключений
Обработка исключений является процессом управления нетипичными событиями (такими как нераспознанные сообщения), которые прерывают нормальный поток реализации программы. Без соответствующей обработки ошибок программа, встречающаяся с нетипичным событием, наиболее вероятно завершится путем непосредственного броска (или повышая), что известно как исключение.
Типы исключения
Существует ряд причин, почему исключение может быть выдано аппаратными средствами, а также программным обеспечением. Примеры включают арифметические ошибки, такие как деление на нуль, потеря значимости или переполнение, вызывая неопределенные инструкции (такие как попытка вызвать нереализованный метод), и попытка получить доступ к элементу набора за пределы.
Обработка исключений Используя директивы компилятора
Существует четыре директивы компилятора для поддержки обработки исключений:
A
@try
блок включает код, который может потенциально выдать исключение.A
@catch()
блок содержит логику обработки исключений для исключений добавленный a@try
блок. Вы можете иметь многократный@catch()
блоки для ловли различных типов исключения.A
@finally
блок содержит код, который должен быть выполнен, выдается ли исключение или нет.A
@throw
директива повышает исключение, которое является по существу объектом Objective C. Вы обычно используетеNSException
объект, но не требуются, чтобы.
Этот пример показывает, как Вы используете директивы при выполнении кода, который мог бы повысить исключение:
Cup *cup = [[Cup alloc] init]; |
@try { |
[cup fill]; |
} |
@catch (NSException *exception) { |
NSLog(@"main: Caught %@: %@", [exception name], [exception reason]); |
} |
@finally { |
[cup release]; |
} |
Сигнализация ошибок
Несмотря на то, что исключения обычно используются во многих средах программирования, чтобы управлять потоком программирования или показать ошибки, не используйте исключения таким образом в Сенсорных приложениях Какао и Какао. Вместо этого необходимо использовать возвращаемое значение метода или функции, чтобы указать, что ошибка произошла и предоставляет информацию о проблеме в ошибочном объекте. Для получения дополнительной информации см. Руководство по программированию Обработки ошибок.