Ruby/例外処理

ruby
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