NSException与NSError在使用中有哪些区别?
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSException* ex = [[NSException alloc]initWithName:@"MyException" reason:@"b==0" userInfo:nil]; @try { int b = 0; switch (b) { case 0: @throw(ex);//b=0,则抛出异常; break; default: break; } } @catch (NSException *exception)//捕获抛出的异常 { NSLog(@"exception.name= %@" ,exception.name); NSLog(@"exception.reason= %@" ,exception.reason); NSLog(@"b==0 Exception!"); } @finally { NSLog(@"finally!"); } [ex release]; } return 0; }
https://developer.apple.com/library/m...
https://developer.apple.com/library/m...
Pengecualian dan kesilapan adalah dua perkara yang sama sekali berbeza. Jika pengecualian dilemparkan tetapi anda tidak menangkapnya, ia akan ranap Tetapi jika ralat dikembalikan, anda boleh melakukan apa sahaja yang anda mahukan kepada dunia luar. Ia hanya memberitahu anda bahawa terdapat ralat dalam panggilan ini.