カレンダー

2024/03
     
2930
31      

広告

Twitter

記事検索

ランダムボタン

try / catch

by 唐草 [2021/08/29]



 プログラムは順次、分岐、反復の3つの制御構造を理解するれば書ける。と言われがちだが、これは間違い。この3つはプログラムの設計方針となるアルゴリズムを考えるのに必要な3要素でしか無い。つまり、プログラムの動きを抽象化するのに必要な知識だ。実際にコードとして書くには、コンピュータの仕様や言語ごとの特徴といった具体的な知識が必要になる。
 そういう具体的な知識が活かされるのは、なんと言ってもエラー処理の部分だろう。目的に向かって処理を進めていく中でどこにどんな障害が立ちはだかっているのかを十分に把握していなければ、プログラムはすぐにエラーで止まってしまう。データが空ではないか?ディスクの空きはあるか?メモリは足りているか?ネットワークにはつながっているか?こういうことを逐次確認しているからこそプログラムは、正常に動作する。
 昔は条件分岐を使ってエラーの有無を1つづつ確認していた。これは骨の折れる作業だった。おかげでコードの7割ぐらいはエラー処理となっていた。プログラムの規模が大きくなってくるとすべてのエラーを追うことは難しい。そこで、人が楽をするために20年ぐらい前から「例外」という概念が普及し始めた。
 「例外」と言うのは、エラーが起きたらプログラムが叫ぶ小さな悲鳴のようなもの。そして、エラーの中身が何であれ悲鳴を聞いたら1つの方法で即座に対応できる仕組みが用意されている。そのおかげで、何段回ものエラー確認をすることなくシンプルにコードを書けるようになった。
 ぼくがプログラムを学んだのは例外の概念が登場した頃。まだまだ例外の存在しない言語が幅を効かせていた。当時ぼくが学んだ言語の多くに例外なんて考え方はなかった。その結果、三つ子の魂百までもという感じでぼくの骨の髄には例外という概念が染み込んでいない。
 3年ぐらい前にも同じ愚痴を書いて意識を改めようとしたのだが、その意識改革はまったくと言っていいほど上手くいっていない。そして、例外処理を適切に施した簡潔なコードを見るたびに打ちのめされるのである。