【Rust】【wip】エラーハンドリングの指針
Rustでエラーハンドリングする際のスタンダードっぽい方法をまとめていく。
今までの言語のエラー設計の観点から、なんとなくこうかもなってのは見えてるけど、、、果たして
キーワード
Error Enum
Error Trait
source(原因調査のため)
thiserror
anyhow
参考
昔の思考
思考
hr.icon
エラーで考えることはいくつかある。
使う側は、返ってきたエラーを元に処理を変えるか否か
エラーを上に返すか
最上段まで上がってきたエラーは、文脈を含んでるか
つまり、どの流れで発生したエラーなのか、後からわかるのか
そのエラーは誰が何のために使うのか
ここを考えることで、それぞれの「誰が」x「目的」ごとに最適な設計が見えてくることになる。
「誰が」を大きく分けると「エンドユーザー」or「運営者/開発者」の2つ。
さらに細かく分解することもあるだろうが、大きくはこの分解。
「目的」も主要なものは2つほど(他にもあると思うが)
1. 実行フローの中で、エラーを受けて制御する
メソッドや関数がエラーを受けて制御を変えたりする
エンドユーザーがエラーを見て、自身の行動を変えるなど
2. エラー内容から修正する
実行中には直せないエラーはloggingされるのが一般的。
そのログ内容からエラーの原因を掴んで修正することになる。
ドメインモデルで考えるエラーは...
オブジェクト生成時の「不正な値による生成できませんでしたエラー」
オブジェクトのメソッド実行時の「実行できなかったエラー」
Chapter8:Zero To Production Rust
hr.icon