Objective-C - 异常处理(Exception)
2012-05-29 10:30
253 查看
苹果关于异常的详细文档:
http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Exceptions/Exceptions.html#//apple_ref/doc/uid/10000012i
关于自定义异常或者扩展:
Objective-C中处理异常是依赖于NSException实现的,它是异常处理的基类,它是一个实体类,而并非一个抽象类,所以你可以直接使用它或者继承它扩展使用:
1.直接使用,分两种,抛出默认的异常,和自定义自己的新的种类的异常:
2.扩展使用,这个推荐你需要自定义一些功能的时候使用,比如,当捕获到指定的异常的时候弹出警告框之类的:
使用:
只要你愿意,你就可以随意的定制它!
http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Exceptions/Exceptions.html#//apple_ref/doc/uid/10000012i
关于自定义异常或者扩展:
Objective-C中处理异常是依赖于NSException实现的,它是异常处理的基类,它是一个实体类,而并非一个抽象类,所以你可以直接使用它或者继承它扩展使用:
1.直接使用,分两种,抛出默认的异常,和自定义自己的新的种类的异常:
- (IBAction)btnClicked_Exception:(id)sender { 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(@"b==0 Exception!"); } @finally { NSLog(@"finally!"); } [ex release]; } //运行的结果: b==0 Exception! finally!
2.扩展使用,这个推荐你需要自定义一些功能的时候使用,比如,当捕获到指定的异常的时候弹出警告框之类的:
@interface MyException : NSException -(void)popAlert @end
@implementation MyException - (void)popAlert { //弹出报告异常原因的警告框 reason UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Tips" message:self.reason delegate:nil cancelButtonTitle:nil otherButtonTitles:nil]; [alert show]; [alert release]; } @end
使用:
- (IBAction)btnClicked_Exception:(id)sender { MyException* ex = [[MyException alloc]initWithName:@"MyException" reason:@"除数为0了!" userInfo:nil]; @try { int b = 0; switch (b) { case 0: @throw(ex);//b=0,则抛出异常; break; default: break; } } @catch (MyException *exception)//捕获抛出的异常 { [exception popAlert]; NSLog(@"b==0 Exception!"); } @finally { NSLog(@"finally!"); } [ex release]; }这个时候,捕获到异常,它就会弹出警告框了。当然,你还可以在MyException里面加一些指定的异常的通用处理方法。
只要你愿意,你就可以随意的定制它!
相关文章推荐
- Objective-C - 异常处理(Exception)
- springMVC源码分析--异常处理机制HandlerExceptionResolver执行原理(二)
- android.os.NetworkOnMainThreadException 异常处理
- python Exception(异常处理)
- 异常处理系列:java.util.NoSuchElementException
- PL/SQL --> 异常处理(Exception)
- android.app.SuperNotCalledException:did not call through to super.onXX() 异常处理
- springMVC源码分析--异常处理机制HandlerExceptionResolver执行原理(二)
- Swift2.0-异常处理(Exception handler)
- android.os.NetworkOnMainThreadException 异常处理
- java.net.UnknownHostException 异常处理
- 异常处理之[Error: com.android.ide.common.process.ProcessException]
- android.os.DeadObjectException memory near r0: 异常处理
- Linux: java.net.UnknownHostException 异常处理
- java.net.UnknownHostException 异常处理
- WCF分布式开发步步为赢(15):错误契约(FaultContract)与异常处理(ExceptionHandle)
- Swift2.0-异常处理(Exception handler)
- java.util.ConcurrentModificationException异常处理
- Objective-C - 异常处理(NSException)
- 【初识Oracle】⑨异常处理EXCEPTION