2011-07-26 107 views
0

我已經編寫了一個通過單個.h​​文件(MyAdaptedViewController.h)引用的iOS庫。iOS:防止圖書館崩潰整個應用程序

這實質上是一個視圖,它位於完整的UIViewController中。然而,由於庫的性質,它可能會崩潰(處理信號處理,網絡連接和音頻輸入/輸出)。

如果在單個UIViewController中發生崩潰,即如果發生崩潰,用戶可以在MyAdaptedViewController被禁用時繼續使用應用程序,那麼我希望整個應用程序能夠免受崩潰。我知道這將取決於崩潰的類型,但我希望大多數崩潰/異常可以被捕獲?

E.g.

將@try {} @趕上{}或

無效的UncaughtExceptionHandler(NSException *除外)

是可能的解決方案?

回答

-1

嗯,顯然任何庫都可能引發意想不到的異常,並且處理不會導致應用程序崩潰的問題很好,但是不會處理庫中的錯誤,測試可能會出現的問題導致崩潰並在本地處理更多,將該庫中的對象置於「錯誤」狀態,並將消息發送到您的UIViewController以通知它?

只是認爲圖書館聽起來像片狀,如果你不得不像這樣沙盒。我相信圖書館會做一些很酷的東西,但它肯定會讓它變得更加強大。

2

不!在iOS應用程序中捕獲異常是普通Cocoa編碼約定的例外。

NSException適用於您在運行時無法預期恢復的異常錯誤。 NSError是針對您在運行時可以從中恢復的錯誤,或者至少顯示用戶的錯誤。

不要試圖處理捕獲異常可能引發的每個錯誤。 Apple提供的API僅限於如果編寫了錯誤,則會引發異常。例如,如果嘗試訪問數組中的對象索引超出範圍,則這是一個編程錯誤,因爲在訪問該對象之前應該已經獲得了正確的索引。

對於所有其他情況,您應該像蘋果一樣使用NSError的實例。

如果這樣做是正確的,可以在內部處理lib中的錯誤。如果不可能將錯誤傳遞給您的調用者,並讓他們處理它。

我在這裏寫了一篇較長的博客文章:http://blog.jayway.com/2010/10/13/exceptions-and-errors-on-ios/

相關問題