Я использую оператор guard
и fatalError()
в своем приложении, чтобы убедиться, что данные находятся в согласованном состоянии. Они помогают выявлять ошибки на этапе разработки. Сейчас я нахожусь на поздней стадии проекта и начинаю думать о том, как справляться с этими fatalError()
вызовами в сборке релиза.
Я не хочу их удалять, потому что они помогают выявить неизвестные ошибки. Я не хочу просто оставлять их как в выпуске продукта, потому что они просто прервали бы приложение, которое не предоставляет пользователю никакой полезной информации о том, что пошло не так. Чего я хотел бы добиться, так это показать сообщение об ошибке на экране, а затем прервать его, когда пользователь нажал «ОК». Я думаю, что может быть два подхода к этому:
1) Не звоните fatalError()
. Выкинь ошибку вместо. Пусть код верхнего уровня обрабатывает ошибку (например, показывает предупреждение). Проблема с этим подходом заключается в том, что требуется изменить многие функции, чтобы они стали «бросаемыми», что, на мой взгляд, неудобно.
2) Второй подход заключается в том, что из того, что я прочитал в net, возможно для кода создать оповещение без доступа к текущему представлению контроллера на экране. Хитрость в том, чтобы создать новое окно. Я еще не исследовал детали.
Меня беспокоит то, что я думаю, что оба подхода имеют одно и то же внутреннее ограничение и применимы не во всех ситуациях. Например, предположим, что в методе делегата источника данных UITableViewControler
что-то идет не так, работает ли он для представления предупреждения из метода делегата? Я сомневаюсь в этом.
Так что мне интересно, какова обычная практика - предоставлять пользователю сообщение о фатальной ошибке? Спасибо за любые предложения.