Это не хорошее использование исключений и try
- catch
- finally
блоки. Вы говорите, что получаете исключение, если заголовок nil
. Итак, что именно вы хотите, чтобы ваше приложение делало это, чтобы грамотно справиться с этой ситуацией? Не показывать диалог вообще? Тогда вы могли бы сделать что-то вроде:
NSString *user = entry[@"user"][@"full_name"];
NSString *caption = text[@"caption"][@"text"];
if (caption != nil && caption != [NSNull null] && user != nil && user != [NSNull null]) {
RNBlurModalView *modal = [[RNBlurModalView alloc] initWithViewController:self title:user message:caption];
[modal show];
}
Или, возможно, вы хотите, чтобы показать что-то другое, если таковые nil
:
NSString *user = entry[@"user"][@"full_name"];
NSString *caption = text[@"caption"][@"text"];
if (caption == nil || caption == [NSNull null])
caption = @""; // or you might have @"(no caption)" ... whatever you want
if (user == nil || user == [NSNull null])
user = @"";
RNBlurModalView *modal = [[RNBlurModalView alloc] initWithViewController:self title:user message:caption];
[modal show];
Или, если у вас есть исходный код для RNBlurModalView
, возможно, вы можете определить, почему именно он генерирует исключение, если заголовок nil
, и исправить эту проблему.
Существует множество возможных подходов, в зависимости от того, что вы хотите, чтобы приложение выполняло в этой ситуации, но обработка исключений - это, несомненно, не правильный подход. Как Dealing With Errors секция Программирования с помощью Objective-C руководства, исключения предназначены для непредвиденной «ошибки программиста», а не простые логические ошибки, и как они говорят:
Вы не должны использовать примерочные поймать блок вместо стандартных проверок программирования для методов Objective-C.
Вы попробовали [исключение] вместо исключения в своем заявлении NSLog. – asafreedman
Я действительно не знаю, как вы могли мне рассказать? – Prad
Я предполагаю, что вы также выбрасываете исключение? Использование исключений для обычных ситуаций, подобных этому, не рекомендуется в Objective-C. Исключения для ... ну ... исключительных ситуаций, от которых программа не может восстановиться. Вместо этого не следует использовать объект 'NSError' и сигнализировать пользователю, если нет надписи. – borrrden