43日目
今日の学習
Ruby
例外処理
Ruby本の「第9章 例外処理を理解する」を読み進めた。
例外とは、エラーが起きてプログラムの実行を続けることができなくなった状態のことを指す。
エラーが起こると、エラーの原因やエラーが起こるまでの過程が沢山出力される。
例外が発生するまでのプログラムの実行過程のことを、バックトレース
またはスタックトレース
と呼ぶ(今まで名称を知らなかった)。
上の行ほど例外の発生箇所に近く、下に行くほど発生箇所から離れるらしい。自分は逆だと思っていた。
通常、例外が発生すると例外が発生した時点でプログラムの処理が止まる。
例外が発生してもプログラムを続行したい場合、例外処理
を行うことでプログラムを続行させることができる。
begin # 例外が起きうる箇所 rescue # 例外が発生した場合の処理 end
この例外処理を入れることで、プログラムが最後まで実行される。
Ruby本の例では、rescue
の箇所にputsで例外が発生した旨をアナウンスするようにしてあった。
また、rescue
は修飾子として扱うこともできるため、begin
、end
を省略することもできる。
例外が発生しそうな処理 rescue 例外が発生したときの戻り値
この場合は、補足する例外クラスを指定することができない。
また、メソッドの中身全体が例外処理で囲まれている場合も、begin
、end
を省略することができる。
複数データをgetsで読み込む
paizaのスキルチェックをやっていたのだが、複数個のデータを読み込むところで少しつまづいたのでメモ。
Ruby入門3:複数データを読み込んでみよう | プログラミング学習サービス【paizaラーニング】
paizaプログラミングスキルチェックの値取得・出力サンプルコード | ITエンジニア向け転職・就活・学習サービス【paiza】
gets
メソッドは、入力から1行ずつのデータを読み込む。そのため、複数行のデータを読み込むためにはgets
を複数回実行する必要がある。
そのため、繰り返し処理を行ってデータを受け取る必要がある。
まさにこちらで書かれている通り、「一度の入力で情報がいっぱい書いてあるような場合」の問題に直面してどうすればいいか分からなくなったため検索した。
受け取った文字列をsplit
メソッドで分割するとよい。
【Ruby入門】splitで文字列を分割しよう! | 侍エンジニアブログ