天天看点

obj-c编程07:异常处理

    好了,到了相对轻松的话题,也是所有语言无可避免的话题:异常的处理。

    我们知道对于一些常见的语言,“异常”是逃不开避不掉的主题:c中相对原始的signal或依赖系统异常支持(比如windows),c++和c#以及java中完善的内置语法,还有ruby中灵活的动态方式,在这里我们看到的是和java类似的obj-c的方法:

我们还可以用@throw抛出自己的异常:

apple@kissair: objc_src$./3

2014-06-30 11:05:40.389 3[1280:507] hello obj-c!

2014-06-30 11:05:40.391 3[1280:507] *** terminating app due to uncaught exception of class 'nil'

libc++abi.dylib: terminating with uncaught exception of type nil

abort trap: 6

呀!执行咋错了呢?只能用nsexception类吗?原因不明啊:

最后介绍一下@finally的语法,@finally类似于java中的finally或者ruby中的ensure语句,表示无论发生啥都必须执行的代码,常常用在确保资源释放的场所:

apple@kissair: objc_src$clang -fobjc-arc -framework foundation 3.m -o 3

2014-06-30 11:09:34.263 3[1304:507] hello obj-c!

2014-06-30 11:09:34.265 3[1304:507] caught myerror:noreason!

2014-06-30 11:09:34.265 3[1304:507] in finally,you must see me!!!