Подтвердить что ты не робот

Каково основное использование NSAssert Vs. NSException

Каково основное использование NSAssert Vs. NSException. Что более рекомендуется и когда?

4b9b3361

Ответ 1

Утверждения обычно используются только во время разработки и скомпилированы из приложения в режиме выпуска (это контролируется NS_BLOCK_ASSERTIONS). Исключения, с другой стороны, могут использоваться все время.

Когда генерируется исключение, он перемещает резервную цепочку вызовов до тех пор, пока она не будет поймана (и не будет проигнорирована, или проигнорировано другое исключение) или она достигает вершины, и в этом случае это приведет к сбою приложения, Его можно рассматривать как часть договора метода класса, и его необходимо документировать, чтобы вызывающий мог справиться с этим правильно.

Утверждения - это настоящая проверка разработчика, которая гарантирует, что что-то (обычно переменная экземпляра) находится в определенном состоянии, а если нет, то abort(), чтобы привлечь внимание разработчиков. Это проверка работоспособности разработчика, чтобы проверить, что что-то находится в состоянии, которое разработчик ожидает от него.

Ответ 2

Утверждения используются для поиска вещей, которые никогда не должны происходить ни при каких обстоятельствах, если ваш код работает так, как вы думаете. Если они происходят, в вашем коде есть ошибка, и вы хотите узнать об этом, по крайней мере, если это произойдет во время тестирования. (Большинство людей отключает утверждения в выпущенном коде.)

В отличие от этого, исключения используются для поиска вещей, которые поступили неправильно, над которыми вы не контролируете. Например, если ваше приложение зависит от сервера базы данных и этот сервер базы данных недоступен, это может привести к возникновению исключения в вашем коде. (Не делайте ошибку при использовании исключений для таких вещей, как проверка входных данных. Если это обычный поток программы - пользователь забыл ввести поле или что-то еще - это не исключение. Исключения должны быть исключительными.)