puts 1 begin number = 0 answer = 100 / number puts answer rescue ZeroDivisionError => e p e ensure puts 2 end puts 3 begin number = 0 answer = 100 / number puts answer rescue => ex p ex.message p ex.class puts "ERROR" ensure puts 4 end puts 1 begin number = 0 answer = 100 / number puts answer rescue ZeroDivisionError => e puts "0では割り算できません" # puts e.message # p e.backtrace STDERR.puts e.backtrace ensure puts 2 end puts 1 begin number = 1 answer = 100 / number puts answer2 rescue NameError => e puts "未定義の変数を呼び出しています" p e ensure puts 2 end puts 1 begin number = 0 answer = 100 / number puts answer2 rescue Exception => e puts "予期せぬエラーが発生しました" p e rescue ZeroDivisionError => e puts "0では割り算できません" p e rescue NameError => e puts "未定義の変数を呼び出しています" p e ensure puts 2 end puts 1 begin puts 2 raise Exception.new("意図的な例外") puts 3 rescue Exception => e puts "予期せぬエラーが発生しました" p e puts e.message ensure puts 4 end def test_exception(number) puts 2 begin puts 3 answer = 100 / number return answer puts 4 rescue ZeroDivisionError => e puts 5 raise e end puts 6 end puts 1 begin answer = test_exception(0) puts 7 rescue ZeroDivisionError => e puts 8 p e end def test_exception(number) puts 2 begin puts 3 answer = 100 / number return answer puts 4 rescue ZeroDivisionError => e puts 5 raise e ensure puts 6 end end puts 1 begin answer = test_exception(0) puts 7 rescue ZeroDivisionError => e puts 8 p e end