2012-09-24 22 views
8

DynamicException ve throwDyn ve throwDynTo, Control.OldException modülünde bulunurdu. Artık OldException iyi gitti, üzerine güvenen paketler bozuldu.Post-ghc-7.6.1 dünyasında DynamicException karşılığı nedir?

ExtensibleException paketinde veya başka bir yerde DynamicException eşdeğeri var mı? Minimal değişikliklerle kurtulmak isterim.

Bağlam: GHC 7.6.1 ile lambdabot oluşturmaya çalışıyorum. Bozuk dosya, lambdabot-utils'da Signal.hs dur.

Güncelleştirme Eski istisnalar kodunun yeni genişletilebilir istisnalara taşınması için bir çeşit rehber var mı? lambdabot çeşitli yerlerde OldException kullanır, hızlı bir düzeltme mümkün görünmüyor. Control.Exception varsayılan olarak dinamik istisnalar destekler gibi yeni Control.Exception bu fonksiyonların

+0

Neden sadece "Control.Exception" değil? Veri olarak keyfi yazılan istisnaları destekler. – dflemstr

cevap

8

eşdeğer basitçe throw, throwTo ve catch bulunmaktadır.

Eski arabirim ile yenisi arasındaki temel fark, bu işlevlerin Typeable yerine Exception kısıtlaması olmasıdır. Ancak, çoğu durumda varsayılan uygulama yeterince iyidir, bu nedenle kullanmak istediğiniz türler için Exception örneklerini bildirmeniz yeterlidir, örn.

instance Exception Foo 
+0

Teşekkürler, basit 'throwTo' çalışır. Daha önce hiç istisna kullanmadım, bu yüzden burada bir şekilde kayboldum. Örneğin. Eski "Exception" veri türü ile ne yapılmalı? –

+1

@ n.m. Temel olarak, eski "İstisna" türünün her kurucusu artık ayrı bir türe karşılık gelir ve tüm istisnalar dinamik olarak yakalanır. Size yardımcı olabilecek [yeni istisna arabirimi] hakkında bir cevap yazdım (http://stackoverflow.com/questions/6009384/exception-handling-in-haskell). – hammar

+0

Teşekkürler, bir deneyeceğim! –

İlgili konular