Обработка исключений
Обработка исключений является процессом управления нетипичными событиями (такими как нераспознанные сообщения), которые прерывают нормальный поток реализации программы. Без соответствующей обработки ошибок программа, встречающаяся с нетипичным событием, наиболее вероятно завершится путем непосредственного броска (или повышая), что известно как исключение.
Типы исключения
Существует ряд причин, почему исключение может быть выдано аппаратными средствами, а также программным обеспечением. Примеры включают арифметические ошибки, такие как деление на нуль, потеря значимости или переполнение, вызывая неопределенные инструкции (такие как попытка вызвать нереализованный метод), и попытка получить доступ к элементу набора за пределы.
Обработка исключений Используя директивы компилятора
Существует четыре директивы компилятора для поддержки обработки исключений:
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]; |
} |
Сигнализация ошибок
Несмотря на то, что исключения обычно используются во многих средах программирования, чтобы управлять потоком программирования или показать ошибки, не используйте исключения таким образом в Сенсорных приложениях Какао и Какао. Вместо этого необходимо использовать возвращаемое значение метода или функции, чтобы указать, что ошибка произошла и предоставляет информацию о проблеме в ошибочном объекте. Для получения дополнительной информации см. Руководство по программированию Обработки ошибок.