2014-02-05 5 views
0

я получаю SIGABRT на следующей строкеXCode: SIGABRT когда возникает неперехваченное исключение

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool 
    { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 

после пошагового кода на некоторое время я обнаружил, что SIGABRT происходит сразу после того, как

NSData *jsonObj = [NSJSONSerialization dataWithJSONObject:myDict 
                options:NSJSONWritingPrettyPrinted 
                error:nil]; 

и затем я понял, что использовал NSDate в одном из свойств dict, который по существу не может быть сериализован - и, смотря на выходную консоль, я также вижу строку:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (__NSDate)' 

так что это понятно, я использовал там недействительный аргумент.

Но меня раздражает то, что XCode останавливается с сигналом: SIGABRT на возвращаемой строке UIApplicationMain вместо отображения недопустимого аргумента в строке, где я передал недопустимый аргумент.

В чем причина такого поведения?

Я использую XCode 5.0.2

+0

Это не отвечает на ваш вопрос, но вы должны использовать '[NSJSONSerialization isValidJSONObject: myDict]', чтобы увидеть, можете ли вы преобразовать объект в JSON и только попробовать преобразовать, если это возвращает ДА. Исключения, как правило, не используются в качестве контроля потока в Objective-C. –

ответ

2

Вы, вероятно, нужно добавить исключение точки останова остановить ближе к этому вопросу.

См. Это Apple Guide.

+0

, но это ломается при каждом броске или каждом улове исключения. Я только хочу, чтобы он показал мне правильную строку, если необработанное исключение приводит к сбою приложения. – user1282931

+0

@ user1282931 Не уверен, что это имеет смысл. Невозможно узнать, обрабатывается ли исключение, пока оно не попадет в 'main()', что и происходит в вашем случае. – trojanfoe

+0

, но это возможно и на других языках ... не может ли IDE показать, где выбрано исключение, которое не обрабатывается? – user1282931

Смежные вопросы