ruby异常处理流程

今天来看看ruby处理流程分析直接先上一段代码
class LinkError < StandardError 
  end
 
  class LinkTest
    @host = "192.168.0.1"
    @port = 8080
    def link
      ret_str = "失败"
      begin
        socket = TCPSocket.open(@host,@port)
        ret_str = "东方不败!"
      rescue => e
        puts "失败中的失败"
        raise LinkError
      end
      return ret_str
    end
  end
 
  #############################
  t = LinkTest.new
  begin
    str = t.link()
    puts str
  rescue LinkError
    puts "还是失败中的失败"
  end
  #############################

答案:
失败中的失败
还是失败中的失败

假设我们在代码中添加一段ensure语句
class LinkError < StandardError 
  end
 
  class LinkTest
    @host = "192.168.0.1"
    @port = 8080
    def link
      ret_str = "失败"
      begin
        socket = TCPSocket.open(@host,@port)
        ret_str = "东方不败!"
      rescue => e
        puts "失败中的失败"
      #############################、
        raise LinkError
     ensure
      return ret_str
    #############################
      end
      end
  end
 
  #############################
  t = LinkTest.new
  begin
    str = t.link()
    puts str
  rescue LinkError
    puts "还是失败中的失败"
  end
  #############################

答案:
失败中的失败
失败

你可能感兴趣的:(socket,Ruby)