プログラミング備忘録

プログラミングの学習状況をメモしています

43日目

今日の学習

Ruby

例外処理

Ruby本の「第9章 例外処理を理解する」を読み進めた。

例外とは、エラーが起きてプログラムの実行を続けることができなくなった状態のことを指す。

エラーが起こると、エラーの原因やエラーが起こるまでの過程が沢山出力される。

例外が発生するまでのプログラムの実行過程のことを、バックトレースまたはスタックトレースと呼ぶ(今まで名称を知らなかった)。

上の行ほど例外の発生箇所に近く、下に行くほど発生箇所から離れるらしい。自分は逆だと思っていた。

通常、例外が発生すると例外が発生した時点でプログラムの処理が止まる。

例外が発生してもプログラムを続行したい場合、例外処理を行うことでプログラムを続行させることができる。

begin
  # 例外が起きうる箇所
rescue
  # 例外が発生した場合の処理
end

この例外処理を入れることで、プログラムが最後まで実行される。

Ruby本の例では、rescueの箇所にputsで例外が発生した旨をアナウンスするようにしてあった。

また、rescueは修飾子として扱うこともできるため、beginendを省略することもできる。

例外が発生しそうな処理 rescue 例外が発生したときの戻り値

この場合は、補足する例外クラスを指定することができない。

また、メソッドの中身全体が例外処理で囲まれている場合も、beginendを省略することができる。

複数データをgetsで読み込む

paizaのスキルチェックをやっていたのだが、複数個のデータを読み込むところで少しつまづいたのでメモ。

Ruby入門3:複数データを読み込んでみよう | プログラミング学習サービス【paizaラーニング】

paizaプログラミングスキルチェックの値取得・出力サンプルコード | ITエンジニア向け転職・就活・学習サービス【paiza】

getsメソッドは、入力から1行ずつのデータを読み込む。そのため、複数行のデータを読み込むためにはgetsを複数回実行する必要がある。

そのため、繰り返し処理を行ってデータを受け取る必要がある。

【Ruby】標準入力と出力のまとめ - Qiita

まさにこちらで書かれている通り、「一度の入力で情報がいっぱい書いてあるような場合」の問題に直面してどうすればいいか分からなくなったため検索した。

受け取った文字列をsplitメソッドで分割するとよい。

【Ruby入門】splitで文字列を分割しよう! | 侍エンジニアブログ

学習メモ