Part14:例外

にこ「あなたたち、プログラムが書ける気になったかもしれないけど・・・重要なことがなってないわ」
真姫「な、何よ、ここにきてキャラ作りとでも言うつもり?」
にこ「そう、アイドルたるもの、変数名は常に可愛らしく、関数のパラメータは無駄なくエレガントに・・・って、ちがああああうっ!!」
絵里(そんなに間違ってない気もするけど、面倒だし黙っとくチカ・・・)
にこ「いい?例えば辞書の参照で、存在しないキーが指定されたら?ファイルを開くのに存在しないファイルが指定されたら?1を0で割ったら?」
真姫「・・・まあ、エラーになるわよね」
にこ「それよそれ!もしその想定外の事態が起きた時にどうするか、それを常に考えてこそ本物のアイドル、いえ、プログラマよ」
真姫「ぐう正論ね」
にこ「というわけで、今日は例外処理をやるにこ☆」

絵里「待ちなさい」
真姫「5cm鯖はないわね」
絵里「まずデータが例外よね」
にこ「・・・なんのことだかわからないにこー」

にこ「とにかく、こうして辞書に存在しないキーでアクセスするとKeyErrorという例外が発生するわ」
絵里「事前に'honoka' in bibiとかでチェックすればいいの?」
にこ「もちろんそれでもいいけれど、これから説明する例外処理を使う方が便利なことが多いわ」

にこ「基本形はこれよ」
真姫「except?」
にこ「tryのブロック内を実行中にKeyErrorが発生したら、except KeyErrorのブロックが実行されるの。そこで、例外の後始末をする」
絵里「これだと、異常終了はしないのね?」
にこ「そうね。この例だと、とりあえずbをNoneにして先に進むわ」

にこ「finallyというのを使うと、例外が起きようが起きまいが必ず実行されるコードブロックが書けるわ」

にこ「ファイルの読み書きって、IOErrorとかよくわからない例外が発生することがあるけど、途中で何かあっても必ずf.close()は実行されるようにしているの」
絵里「開きっぱなしになったらまずいものね」
にこ「ただファイルオブジェクトに関しては、真姫の説明にあったwithを使う方がエレガントにこ」

絵里「じゃあ、次回はオブジェクト指向プログラミングについて。難しくなるわよ?」


LINEで送る
Pocket


返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です