我只是想知道是否可以拋出任何通用例外,以防我不想創建自定義例外,例如在一些簡單的腳本中。
我正在尋找一個以單身String為理由的例外。
作為一個例子NoMethodError,但是它有一個特定的語意,我想要一個通用的。
https://hackage.haskell.org/package/base-4.16.0.0/docs/Control-Exception.html#t:NoMethodError
uj5u.com熱心網友回復:
這完全取決于您想要做什么。
如果你想拋出一個 IO 錯誤,那么你可以呼叫error,它會產生一個ErrorCall例外。您可以選擇在您的main函式中捕獲它并生成更用戶友好的錯誤訊息。這大致相當于大多數其他編程語言以例外處理方式提供的功能。
如果您有一些可能在各個階段失敗的非 IO 計算(例如,在 a 中查找某些東西Map但沒有找到它),那么您可以將Either String其用作快速而骯臟的例外 monad。相當于拋出例外的是Left.
為了使Either String功能更強大,您可以匯入Control.Monad.Except. 這引入了MonadError型別類,其中包括Either作為一個實體。因此,通過匯入它,您可以使用throwErrorand catchError。
或者,您可以使用ExceptTmonad 轉換器(也是 的一部分Control.Monad.Except)將例外添加到您碰巧正在使用的任何其他 monad。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/426236.html
下一篇:類不存在且存在
