LoginSignup
0
0

More than 1 year has passed since last update.

Ruby 入門 [例外の詳しい情報を得る]

Last updated at Posted at 2021-09-12

● 例外の詳しい情報を得る

例外オブジェクトの代入
begin
 #例外が発生する可能性がある処理
rescue 例外クラス => e #変数eに例外オブジェクトが代入される
 #例外が発生する可能性がある処理(rescue節)
end
def cat(filename)
    #ファイルの内容を表示する
    File.open(filename) do |file| —————①ファイルを開く
        file.each_line {|line| puts line} ————②ファイルの内容を表示する
end ————③ファイルを閉じる

resucue SystemCallError => e ————④例外処理 : 例外オブジェクトを変数eに代入
    puts "--- 例外が発生しました ---"
    puts "例外クラス: #{e.class}" ———⑤e.classで例外オブジェクトのクラス名を表示
    puts "例外メッセージ: #{e.message}” ————⑥e.messageで例外メッセージを表示
end

filename = ARGV.first ———⑦コマンドプロントの引数を読み込み
cat(filename)
↪️>ruby cat.rb menu.txt -menu.txtテキストファイルを用意して”カフェラテ””カプチーノ”を入力
      カフェラテ
      カプチーノ

存在しない適当なファイル名を指定してプログラムを実行すると

↪️>ruby cat.rb not found.txt
       —例外が発生しました—
       例外クラス: Errno::ENOENT
       例外メッセージ: No such file or directory @ rb_sysopen - not found.text

●Fileクラス —ファイル操作に組み込みライブラリのFileクラスを使う

●File.open —引数filenameで指定したファイルを開きファイル操作のためのFileオブジェクトを作ってfile変数に代入する

●each_line —配列のeachに似たメソッドで、ファイルの先頭から1行ずつ読み込み、繰り返しline変数 に代入する。読み込んだ各行は、putsメソッドで画面に表示する。

●SystemCallError => —ファイル操作などに失敗した時に発生する例外クラスです。例外クラスの後ろの=> eのeは変数。受け取った例外オブジェクトが変数eに代入される。

●e.class —例外オブジェクトのクラス名を表示

●e.message —例外のメッセージを表示

●classとmessage —例外クラスで使えるメソッド

●ARGV —Rubyが用意した特別な定数で、コマンドプロントで指定した引数を要素として持つ配列。AVGRで先頭の要素を取得する。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0