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