天天看點

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!!!