Download - 10 ns error
![Page 1: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/1.jpg)
iOS Internship 2014NSError+NSExcetion
Максим Забелин
![Page 2: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/2.jpg)
NSError+NSExeption
Ошибки бывают двух видов
Деление на 0, выход за границы массива, ...
NSException
Не удалось загрузить файл, не удалось создать объект, …
NSError
![Page 3: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/3.jpg)
NSError+NSExeptionNSError+NSExeption
NSErrorNSURL *yandex = [NSURL URLWithString:@"http://ya.ru"];NSError *error = nil;NSString *yandexString =
[NSString stringWithContentsOfURL:yandex encoding:NSUTF8StringEncoding error:&error];
NSError всегда передается как указатель на указатель
![Page 4: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/4.jpg)
NSError+NSExeptionNSError+NSExeption
Информация об ошибке- (NSInteger)code; // код ошибки- (NSString *)domain; // домен ошибки (напр., NSCocoaErrorDomain)// могут существовать ошибки с одним кодом, но разными доменами - (NSDictionary *)userInfo; // дополнительная информация
![Page 5: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/5.jpg)
NSError+NSExeptionNSError+NSExeption
userInfo: полезные ключи
● NSLocalizedDescriptionKey
● NSLocalizedFailureReasonErrorKey
● NSLocalizedRecoverySuggestionErrorKey
![Page 6: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/6.jpg)
NSError+NSExeptionNSError+NSExeption
Как использовать такие методы?//...
NSError *error = nil;
NSString *yandexString =
[NSString stringWithContentsOfURL:yandex
encoding:NSUTF8StringEncoding
error:&error];
// сначала проверяем, произошла ли ошибка...
if (error != nil) {
// …, и только после этого обрабатываем ошибку
NSLog(@"Error - %@", error);
}
![Page 7: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/7.jpg)
NSError+NSExeptionNSError+NSExeption
Как самому создать такой метод?- (BOOL)myOwnMethodReturnsError:(NSError *__autoreleasing *)error {
//...if (somethingWrong && error) {
*error = [[NSError alloc] initWithDomain:@"MyErrorDomain" code:666 userInfo:nil];return NO;
}return YES;
}
![Page 8: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/8.jpg)
NSError+NSExeptionNSError+NSExeption
NSExceptionNSArray *array = @[@"one", @"two", @"three"];int index = 100;@try {
NSLog(@"%d item: %@", index, array[index]);}@catch (NSException *exception) {
NSLog(@"Oops... exception occured");NSLog(@"Name - %@", exception.name);NSLog(@"Reason - %@", exception.reason);
}@finally {
// запускается независимо от того, было исключение или нет}
![Page 9: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/9.jpg)
NSError+NSExeptionNSError+NSExeption
Скорее всего, вам это не пригодитсяNSException *myException =[[NSException alloc] initWithName:@"ExceptionName" reason:@"ExceptionReason" userInfo:nil];@throw myException;
//или[NSException raise:@"ExceptionName" format:@"ExceptionReason"];
![Page 10: 10 ns error](https://reader036.vdocuments.pub/reader036/viewer/2022081813/5482a444b4af9f730d8b487b/html5/thumbnails/10.jpg)
NSError+NSExeptionNSError+NSExeption
Дополнительные материалыhttp://nshipster.com/nserror/
http://rypress.com/tutorials/objective-c/exceptions.html