Elixir語言中 Kernel.defexception 相關用法介紹如下。
用法:
defexception(fields)
(宏)
定義異常。
異常是由實現  行為的模塊支持的結構。 Exception   行為需要實現兩個函數:Exception 
- 
- 接收給exception/1的參數並返回異常結構。默認實現接受合並到結構中的一組關鍵字參數或用作異常消息的字符串。raise/2 - 
- 接收異常結構並且必須返回其消息。最常見的異常有一個消息字段,默認情況下由該函數訪問。但是,如果異常沒有消息字段,則必須顯式實現此函數。message/1 
由於異常是結構體,因此   支持的 API 在 defstruct/1   中也可用。defexception/1 
引發異常
引發異常的最常見方法是通過   :raise/2 
defmodule MyAppError do
  defexception [:message]
end
value = [:hello]
raise MyAppError,
  message: "did not get what was expected, got: #{inspect(value)}"
在許多情況下,將期望值傳遞給   並在 raise/2   回調中生成消息會更方便:Exception.exception/1 
defmodule MyAppError do
  defexception [:message]
  @impl true
  def exception(value) do
    msg = "did not get what was expected, got: #{inspect(value)}"
    %MyAppError{message: msg}
  end
end
raise MyAppError, value
上麵的示例顯示了自定義異常消息的首選策略。
相關用法
- Elixir Kernel.defmodule用法及代碼示例
 - Elixir Kernel.defmacro用法及代碼示例
 - Elixir Kernel.defdelegate用法及代碼示例
 - Elixir Kernel.defguard用法及代碼示例
 - Elixir Kernel.defoverridable用法及代碼示例
 - Elixir Kernel.defstruct用法及代碼示例
 - Elixir Kernel.defp用法及代碼示例
 - Elixir Kernel.def用法及代碼示例
 - Elixir Kernel.destructure用法及代碼示例
 - Elixir Kernel.div用法及代碼示例
 - Elixir Kernel.SpecialForms.case用法及代碼示例
 - Elixir Kernel.round用法及代碼示例
 - Elixir Kernel.left / right用法及代碼示例
 - Elixir Kernel.put_in用法及代碼示例
 - Elixir Kernel.tl用法及代碼示例
 - Elixir Kernel.left - right用法及代碼示例
 - Elixir Kernel.tuple_size用法及代碼示例
 - Elixir Kernel.to_charlist用法及代碼示例
 - Elixir Kernel.base ** exponent用法及代碼示例
 - Elixir Kernel.left !== right用法及代碼示例
 - Elixir Kernel.if用法及代碼示例
 - Elixir Kernel.spawn_monitor用法及代碼示例
 - Elixir Kernel.to_string用法及代碼示例
 - Elixir Kernel.length用法及代碼示例
 - Elixir Kernel.first..last用法及代碼示例
 
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Kernel.defexception(fields)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
