Object-C異常機制
使用@try...@catch...@finally捕捉異常
@try
{
// 業務實現代碼
...
}
@catch (異常1 ex)
{
// 異常處理代碼
}
@catch (異常2 ex)
{
// 異常處理代碼
...
}
// 可能更多的catch塊
...
@finally
{
}
如果執行@try塊裏的業務邏輯代碼時出現異常,系統將自動生成一個異常對象,拋出異常,由相應的@catch塊捕獲異常。BOOL test()
{
@try
{
// 因爲finally塊中包含了return語句,所以下面的return語句失去作用
}
@finally
{
return NO;
}
}
使用@throw拋出異常,如果需要在程序中自行拋出異常,應使用@throw語句,@throw語句可以單獨使用,@throw語句拋出的不是異常類,而是一個異常實例,而且每次只能拋出一個異常實例
// 定義類的接口部分
@interface MyException : NSException
@end
// 定義類的接口部分
@interface Dog : NSObject
@property (nonatomic , assign) int age;
@end
// Dog提供實現部分
@implementation Dog
@synthesize age = _age
-(void) setAge : (int) age
{
if (self.age != age)
{
// 手動拋出異常
@throw [[MyException alloc] initWithName : @"InlleagelaArgumentException" reason:@"" userInfo:nil];
}
}