Elixir:
エラー処理
方法
Elixirでは、パターンマッチングとcase
ステートメントを使用して、エラーを含む異なる結果を処理することがよくあります。
defmodule Example do
def divide(a, b) do
case b do
0 -> {:error, "ゼロで割ることはできません。"}
_ -> {:ok, a / b}
end
end
end
# 成功した除算
{:ok, result} = Example.divide(10, 2)
IO.puts("10 / 2 は #{result}")
# ゼロで割る試み
{:error, reason} = Example.divide(10, 0)
IO.puts("エラー: #{reason}")
サンプル出力:
10 / 2 は 5.0
エラー: ゼロで割ることはできません。
このElixirコードを実行すると、入力に応じて成功した除算またはエラーメッセージのいずれかが得られます。ここではクラッシュはありません!
深掘り
昔はエラー処理はしばしば戻り値のチェックに関して行われました。しかしElixirの関数型のルーツのおかげで、{:ok, value}
や{:error, reason}
のようなタグ付けされたタプルとパターンマッチングがあり、それらはよりエレガントです。
Elixirでのエラー処理のその他の方法:
- **Elixirの
try
とrescue
**は命令型言語の伝統的なtry-catch
に似ていますが、Elixirの明示性を好むため、頻繁には使用されません。 - スーパーバイザーとGenServersは、ElixirのOTPフレームワークの一部であり、障害耐性に関するものです。それらはあなたのコードのプロセスを監視し、物事がおかしくなったら再起動する準備ができています。
実装の面では、ElixirはErlangの堅牢性に基づいて構築されています。エラーはパターンマッチングと関数型の良さを使って扱うべきもう一種のメッセージとして扱われます。
参照する
Elixirでのエラー処理に関するさらなる読み物:
- 公式のガイドElixirのエラー処理。
- プロセスとOTPについての詳細を学ぶ。
- Elixir Forumは質問するのにいつもいい場所です: https://elixirforum.com。