как поймать исключение, выброшенное imageWithData: iPhone - PullRequest
0 голосов
/ 26 января 2012

Я хочу попробовать создать изображение с помощью NSdata.Если imageWithData: метод UIImage может создать его успешно, я пойду по пути, но если он не может создать, я хочу пойти другим путем.

Это вообще возможно?

Я пробовал

    @try {
        im = [UIImage imageWithData:data];
        NSLog(@"Trying");
    }
    @catch (NSException * e) {
        NSLog(@"Exception");    
        anotherData = doSomethingWithData(data)
        im = [UIImage imageWithData:anotherData];
    }
    @finally {
        NSLog(@"Final");
        [self.questionList addObject:im];
    }

, но это приводит к сбою приложения.

Как я могу поймать это исключение, не вызывая сбой приложения?

Исключение составляет следующее:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'

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

Ответы [ 2 ]

2 голосов
/ 26 января 2012

Вы получаете ошибку, потому что im остается nil и вам не разрешено добавлять nil в массив.

Вы можете сделать это так:

im = [UIImage imageWithData:data];

if(im == nil) {
    anotherData = doSomethingWithData(data)
    im = [UIImage imageWithData:anotherData];
}

if(im != nil)
    [self.questionList addObject:im];
0 голосов
/ 26 января 2012

Реализация, похожая на ваш шаблон выше, будет переписывать блок finally следующим образом:

@finally {
   NSLog(@"Final");
   if(im) {
       [self.questionList addObject:im];
   }
}

Однако весь кусок кода может быть легко переписан (и должен), чтобы не требовать обработки исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...