2012-09-24 65 views
8

DynamicExceptionthrowDynthrowDynTo曾經在Control.OldException模塊中。現在OldException已經消失了,依賴它的軟件包已損壞。後ghc-7.6.1世界中的DynamicException相當於什麼?

ExtensibleException軟件包或其他地方是否有等效的DynamicException?我想通過最小的改變逃脫。

背景:我正在嘗試使用GHC 7.6.1構建lambdabot。破損的文件是lambdabot-utils中的Signal.hs

更新是否有某種指導將舊的異常代碼移植到新的可擴展異常? lambdabot在幾個地方使用OldException,快速修復似乎不可行。

+0

爲什麼不只是'Control.Exception'?它支持將任意類型的異常作爲數據。 – dflemstr

回答

8

在新Control.Exception的這些功能等同物僅僅throwthrowTocatch,如Control.Exception默認支持動態異常。

舊界面和新界面之間的主要區別是這些功能有Exception約束而不是Typeable。但是,在大多數情況下,默認實現是足夠好的,所以您只需要爲要使用的類型聲明Exception實例,例如

instance Exception Foo 
+0

謝謝,簡單'throwTo'的作品。我之前從未使用過例外,所以我在這裏有點失落。例如。如何處理舊的'Exception'數據類型? –

+1

@ n.m。基本上,舊的'Exception'類型的每個構造函數現在對應於一個單獨的類型,並且動態捕獲所有異常。我寫了[關於新的異常接口的答案](http://stackoverflow.com/questions/6009384/exception-handling-in-haskell),可能對您有所幫助。 – hammar

+0

謝謝,我會試試看! –

相關問題