「エラーが値である Rust ではメソッドチェーンや通常の関数でエラーからの復帰を書けるのに対して、例外が戻り値型と別の存在になっている言語では構文レベルで特殊な扱いが必要になる」というエラーハンドリングの言語由来の複雑性の違いを例示したかったやつです
これ <https://mastodon.cardina1.red/@lo48576/105634679893487496> のことを言ってるのなら、これはマジで単なる例で、 <https://mastodon.cardina1.red/@lo48576/105634688953669899> と対比しただけです (I/O エラーを問答無用で無視する実装が正しいかは別の問題)
「ネットワーク越しに不正なデータが来た」は「予期した形式でないことを検出した」に入るべきで (つまり「不正なデータをロード時に検査するべき」を含意する)、その場合クラッシュするのはおかしい
や、言い方が悪かったかもしれないけど私はクラッシュするべきでないとは最初から主張してないんです、過去こんな記事も書いたように……
Panic を恐れるべからず - 何とは言わない天然水飲みたさ
https://blog.cardina1.red/2019/12/19/dont-fear-the-panic/
例外握りつぶしまくり書けばよいと言いたいんじゃなく、もっとちゃんと安全優先に書く方がよくね?><
って言いたい><
https://mstdn.nere9.help/@orange_in_space/105634818389694192
ここで
v = null;
if(auto w = load_foo("foo.json")) {
v = w;
} else {
v = default_foo();
}
みたいなのとか
v = null;
try {
v = load_foo("foo.json");
} catch (IoException e) {
v = Foo.default();
}
みたいな書き方をしないといけないの、そりゃプログラマが雑にエラーを扱おうとするのも致し方なしみたいな感じになってくるし、それって言語側が「正しいことを書きやすく、正しくないことを書きづらく」のデザインに失敗しているというだけの話なのではと