Ruby異常

4384 ワード

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

# Ruby   
    # =>              .              ,             ,         ...
    # =>       ,      .              ,                ,           ,            . 
    # => Ruby                .       begin/end              ,     rescue      Ruby         .

# =>   begin   rescue          .              ,       rescue   end     . 

#begin #   

#raise .. #     

# =>    begin       rescue   , Ruby                  . 
# =>    rescue                     ,          ,      .
# =>                 ,          rescue         else   .
#rescue [ExceptionType = StandardException] #                StandardException
#$! #       
#$@ #            
#else #         
#..
#ensure #        ,      

#end #   


#begin 
#   file = open("unexistant_file")
#   if file 
#       puts "File opened successfully"
#   end
#
#rescue
#   file = STDIN
#end

#print file, "==", STDIN, "
" # retry # => rescue , retry begin . # => retry, #begin # => rescue #rescue # => # retry # => begin #end # raise # => raise . . #raise # => ( RuntimeError). . # #raise "Error Message" # => RuntimeError , . . # #raise ExceptionType, "Error Message" # => , . # #raise ExceptionType, "Error Message" condition # => , ( unless) . #begin # puts 'I am before the raise' # raise 'An error has occurred' # => # puts 'I am after the raise' #rescue # puts 'I am rescued.' # => exe block #end #puts 'I am afrer the begin block' # ensure # => , , . , , , . # => ensure . ensure rescue , . # => ensure . , , , . #begin #.. #.. #rescue #.. #ensure #.. #.. #end #begin # raise 'A test exception' # => #rescue Exception => e # puts e.message # puts e.backtrace.inspect #ensure # puts "Ensuring execution" #end # else # => Ruby else , rescue , ensure . # => else . #begin #.. #.. #rescue #.. #else #.. #ensure #.. #.. #end #begin # puts 'I am not raising exception' #rescue Exception => e # puts e.message # puts e.backtrace.inspect #else # puts 'Congratulations -- no errors!' #ensure # puts 'Ensuring execution' #end # Catch Throw # => raise rescue , . catch throw . # => catch ( Symbol String) . throw. #throw :lablename #.. #catch :lablename do # => throw catch #end # #throw :lablename condition #.. #catch :lablename do #.. throw catch #end #def promptAndGet(prompt) # print prompt # res = readline.chomp # throw :quitRequested if prompt == '!' # return res #end #catch :quitRequested do # name = promptAndGet("Name: ") # age = promptAndGet("Age: ") # sex = promptAndGet("Sex: ") #.. # #end #promptAndGet("Name: ") # Exception # => Ruby . , Exception . : # => Interrupt # => NoMemoryError # => SignalException # => ScriptError # => StandardError # => SystemExit # => Fatal , Ruby . # => ScriptError Standard . . # => , Exception . #class FileSaveError < StandardError # attr_reader :reason # def initialize(reason) # @reason = reason # end #end #File.open("test", "w") do |file| #begin # .. #rescue # # raise FileSaveError.new($!) #end #end