00:01
こんにちは 今日も夜に収録しています
在宅で仕事をしてたので仕事の帰りではないんですけど ちょっと気分転換に散歩しようかなと思って家の周りを歩いてます
やっぱり寒いですねー 昨日は
何の話をしたかというと URLエンコードの話をしてましたね
今日は エラーハンドリングの話をしたいなというふうに思います
Webアプリケーションにおけるエラーハンドリングです 最近のプログラミング言語は
大域脱出の機能があるプログラミング言語が多いと思います トライキャッチとかそういうやつですね
何かエラーがあったらエラーをスローして それをどっかでキャッチすると
そうするとプログラムを大きくジャンプして例外処理は 例えば
Webアプリケーションあったら 500のインターナルサーバーエラーみたいなのをレンダリングして終わるみたいに処理できると
そういうのがあると思います いやー寒い もうちょっと服を着てくればよかった
語言語なんかはパニックっていう大域脱出の機能があるものの そういうのもあるけど
その回数の戻り値がデフォルトで 複数簡単に返せるので
その一番最後の引数がエラー型になってて それのエラーチェックをしましょうみたいな
その言語もあると思います 多くにはトライキャッチっていうのがないので
処理を関数でラップして入れ子にしていった時に 奥まったところでエラーが起きたら
それをうまくハンドリングするために 大域脱出みたいなのが欲しくなるんですよね
Goみたいに関数の戻り値を複数返すみたいなのもできないですし
で
まあでもトライキャッチないんで どうしたもんかなとなるんですね
最初はエラーだったら関数をリターンするみたいなのをGoみたいに
03:02
関数の戻り値を複数できないんだけど なんか頑張って
実装してたんですけど やっぱ結構漏れあるし
難しいんですよね ウェブアプリケーションって何かエラーが起きたら
500インターナルサーバーエラーっていうのが出て アプリケーションエンジニアは500エラー出てるよみたいな気持ちになると思うんですけど
そもそも誰か500エラーにしてくれないとですね エラーにはならないんですよね
なんで
頑張ってエラーチェックを自分で実装した時は
途中でどこか失敗してるのにエラーチェックが漏れてて 200が変えるとかですね そういうのがいっぱい起こるようになってしまって
もうなんだこれっていう感じになっちゃったんですね いろいろ考えてって思いついて結果
多くにも待機脱出の機能が実はあるんですね それがNextとかNextファイルって呼ばれる古文でこれを使うことにしました
Nextっていうのは もともと多くは標準入力だったファイルから入力受け付けるんですけど
これの次の行を読むっていう 命令です
他の言語にはないこんな特別な命令があって処理の縦断して また次の行のパターンマッチとそのアクションの実行ってやつを最初から
デラシアスで実行するっていうようなことになってます なんで関数の入れ子の深いところにいても
もうそこで処理が中断されて一番最初に戻る 実質待機脱出ができるわけです
なので 1行1HTTPリクエストみたいな対応関係にしておけば HTTPリクエストの処理途中でやめたいときは
500のレスポンスとかを返してNextをやればよい そういうふうになります
私の作ってるWebアプリケーションサーバーでは Debut Randomみたいな疑似デバイスから文字を永遠に垂れ流すようにしておいて
それを適当な長さで開業にして 多くの標準入力に与えておくっていうふうにしてます
なので HTTPリクエスト1個処理終わったら 次の業に行く また次の業に行くみたいなのが
疑似デバイスから永遠に標準入力が送られてくるので成立できると
というわけで 多くで待機脱出したいならNextを使おうというのが 今日の結論になります
06:03
明日は何について話しましょうかね 今日はこんな感じで終わります
ではまた