iOS -- @try

@try
{
    // 业务逻辑
}
@catch (异常类型名1 ex)
{
    //异常处理代码
}
@catch (异常类型名2 ex)
{
    //异常处理代码
}
// 可以捕捉 N 个 异常 ...
@finally
{
//回收资源
}
//捕获后执行的代码

这是苹果的一种异常捕获机制,不常用

将可能出现异常的代码放在@try里,如果出现异常,会查找是否有处理这个异常的catch,在catch里处理完毕之后,执行@finally中的代码

@catch中也可能再次抛出异常,如果有异常没有被catch处理的话,finally中的代码会执行,finally后面的代码不会执行

ios中很少用到try和catch

简单的来说,Apple虽然同时提供了错误处理(NSError)和异常处理(exception)两种机制,但是Apple更加提倡开发者使用NSError来处理程序运行中可恢复的错误。而异常被推荐用来处理不可恢复的错误。

原因有几个,在非gc情况下,exception容易造成内存管理问题(文档有描述即使是arc下,也不是安全的);exception使用block造成额外的开销,效率较低等等,另外这也的确是Cocoa开发者的习惯。




try catch还有一个灵活的巧用:

有时候我们加的全局断点并不能跳到异常的代码块,并且没有答应任何异常信息,
我们根据异常的上下文 找到异常代码块但是不知道到底是报的什么异常,
那么可以对那个异常代码块包上一个try catch ,
然后在catch中打印exception的内容,这样就能够知道到底是出现了什么异常。
每当出现bug或者crash的时候,我们总是习惯性的加入了NSLog或则单步调试。




扫描二维码关注公众号,回复: 3232944 查看本文章
 

猜你喜欢

转载自www.cnblogs.com/chebaodaren/p/9661090.html
try