エラーをどこまで回復するか、どう壊すか
関連
@keno_ss: エラーをどう扱うべきか/抽象化すべきかは 1. どう壊れてよいか、 2. プログラムの組み方に依るものか (事前条件違反など)、3. どうハンドリングしたいか に依るというのが持論。 @keno_ss: 1. は概ねプログラムの用途やユーザーにより決まる。daemon でない CLI アプリケーションならかなり自由に落ちて良い。スケールする API サーバーなら基本エラーレスポンスを返すが panic も許容。Chrome の browser プロセスは落ちてほしくないし renderer プロセスは割と死んでもよい、など。 @keno_ss: 2. はプログラムの組み方が悪かったり何らかの不整合が起きたら panic すべきことが多いが、1. に依存して微妙に変わる。WAL 的なリカバリーが入ってたり単発のリクエストを捨てて良いなら panic したい。死ぬ前にユーザーに通知を出したいならエラーにするかスーパバイザでハンドリングするべき。 @keno_ss: 3. は thiserror と anyhow などの使い分けで散々言われているやつ。 @keno_ss: プログラム上でどう扱うべきかというのはバグにどう対処するかという問題とセットなわけです。