попробуй ... лови не работает - PullRequest
1 голос
/ 10 сентября 2010
int main (int argc, const char * argv[]) { <br>

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

int a1,b1,c1;
@try {      
    NSLog(@"Enter numerator: ");
    scanf("%i",&a1);
    NSLog(@"Enter denomenator: ");
    scanf("%i",&b1);
    c1 = a1/b1;
    NSLog(@"%i",c1);
}
@catch (NSException * e) {
    NSLog([e name]);
    NSLog([e description]);
    NSLog([e reason]);
}
@finally {
    NSLog(@"inside finally block");
}
[pool drain]; 

return 0; 

}   

Здесь, если я введу значение a1 = 10, b1 = 0, тогда должно быть сгенерировано исключение, поэтому оператор в блоке catch должен выполняться.Но это не так.Программа потерпела крах.Try..Catch не работает в этом случае ...... Похоже, я делаю что-то не так ...

Ответы [ 3 ]

3 голосов
/ 10 сентября 2010

try / catch будет работать только для генерируемых исключений Obj-C. Это довольно высокоуровневые конструкции. Это, вероятно, отличается от блоков Java try / catch, которые позволяют вам ловить практически все.

2 голосов
/ 30 июня 2013

Похоже, что ОП просто хочет пример try-catch-finally.На всякий случай, если это кому-то еще нужно, вот основной пример работы с ARC:

#import <Foundation/Foundation.h>

int main (int argc, char *argv[]) {
    @autoreleasepool {
        @try {
            @throw ([NSException exceptionWithName:@"MyException"
                                            reason:@"Just testing"
                                          userInfo:nil]);
        }
        @catch (NSException *ex) {
            NSLog(@"Exception caught: %@", ex);
        }
        @finally {
            NSLog(@"Finally is executed whether there's an exception or not");
        }
    }
    return 0;
}
1 голос
/ 10 сентября 2010

Вы видите исключение с плавающей запятой, вызванное кодом C (c1 = a1 / b1).Это не входит в исключение NSException.

Если вы хотите пройти через блок catch, вы можете заменить свой код FPE на

[[NSString string] setValue:@"" forKeyPath:@"KP"];

, что вызовет исключение NSUnknownKeyException.

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