`
jsntghf
  • 浏览: 2552003 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

ruby线程局部域变量

阅读更多

一、$!

 

最近发生的异常的信息,由raise设定。

 

 

  def exception
    begin
      raise "exception test."
    ensure
      puts $! # => exception test. 
    end
  end

 

二、$@

 

以数组形式保存着发生异常时的back trace信息。数组元素是字符串,它显示了方法调用的位置,其形式为"filename:line"或"filename:line:in `methodname`" 。在向$@赋值时,$!不能为nil。

 

 

  def exception
    begin
      raise "exception test."
    ensure
      puts $@
      puts "$@ size is:#{$@.size}"
    end
  end

 

输出结果如下:

 

 

/Users/gaohf/NetBeansProjects/RailsApplication1/app/controllers/spaces_controller.rb:8:in `exception'
/Users/gaohf/NetBeansProjects/RailsApplication1/app/controllers/spaces_controller.rb:4:in `index'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `send'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `perform_action_without_filters'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:617:in `call_filters'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/rescue.rb:136:in `perform_action_without_caching'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/caching/sql_cache.rb:13:in `perform_action'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/query_cache.rb:8:in `cache'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/caching/sql_cache.rb:12:in `perform_action'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `send'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `process_without_filters'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:606:in `process_without_session_management_support'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/session_management.rb:134:in `process'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:392:in `process'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:183:in `handle_request'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:110:in `dispatch_unlocked'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:123:in `dispatch'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `synchronize'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `dispatch'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:132:in `dispatch_cgi'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:39:in `dispatch'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/webrick_server.rb:103:in `handle_dispatch'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/webrick_server.rb:74:in `service'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/webrick_server.rb:60:in `dispatch'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/servers/webrick.rb:66
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/server.rb:49
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
script/server:3
$@ size is:49

 

 

分享到:
评论

相关推荐

    ruby语言帮助文档(简体中文)

    Ruby也支持变量(局部变量、实例变量、类变量和全局变量),以及常量。 2. **面向对象编程**:Ruby是彻头彻尾的面向对象语言,一切皆对象。每个变量都是一个对象,具有属性(或称为实例变量)和行为(方法)。Ruby...

    ruby trap 初学者使用

    - Ruby有四种变量类型:局部变量(以小写字母或下划线开头),实例变量(以`@`开头),类变量(以`@@`开头)和全局变量(以`$`开头)。理解它们的作用域和用法是避免陷阱的关键。 - 常量在Ruby中是可变的,但改变...

    Programming-Ruby-1.9源代码

    - 变量:Ruby支持局部变量、实例变量、类变量和全局变量,源代码中会展示它们的用法和作用域。 - 数据类型:包括字符串、数字、布尔值、数组、哈希等,通过代码你可以看到它们的操作和转换方式。 - 控制结构:如...

    教程资源ruby

    - **全局变量**、**实例变量**和**局部变量**:不同作用域内的变量类型。 - **类常量**:属于类的常量。 - **异常处理**:通过 `rescue` 和 `ensure` 处理程序错误和清理操作。 - **存取器**:getter 和 setter 方法...

    ruby基础教程中文第四版

    1. **变量和常量**:Ruby中的变量分为局部变量、实例变量、类变量和全局变量,常量则遵循全大写命名规则。理解它们的作用域和使用方式是掌握Ruby语法的关键。 2. **数据类型**:Ruby支持多种数据类型,如整数、...

    Ruby - Ruby for Rails

    - **变量作用域**:讲解变量的作用域规则,包括局部作用域、块作用域、类作用域等。 - **动态类型**:探讨 Ruby 的动态类型系统,了解如何根据运行时的数据类型进行操作。 #### 2.2 使用类组织对象 - **类定义**:...

    Ruby语言相关项目的示例

    - 变量:Ruby中的变量分为局部变量、实例变量、类变量和全局变量,它们有不同的标识符和作用域。 - 类与对象:Ruby是面向对象的语言,一切皆对象。类是创建对象的蓝图,而对象则是类的实例。 - 方法:Ruby支持...

    Ruby程序设计.doc

    - **局部变量:** 在特定的作用域内有效。 - **实例变量:** 存储在对象中,对象间的实例变量相互独立。 - **类变量:** 类的所有实例共享。 - **全局变量:** 在整个程序范围内有效。 #### 四、基本类型 **4.1 ...

    Ruby语言入门教程

    在Ruby中,变量分为局部变量、实例变量、类变量和全局变量。局部变量作用域仅限于定义它的方法或块内部;实例变量以`@`开头,作用域在整个对象中;类变量以`@@`开头,作用域在整个类及其子类中;全局变量以`$`开头,...

    ruby cookbook

    1. **基本语法**:介绍Ruby的基础语法,如变量定义(局部变量、实例变量、类变量、全局变量)、数据类型(字符串、整数、浮点数、布尔值、数组、哈希等)以及流程控制(条件语句、循环结构)。 2. **面向对象编程**...

    ruby初学者教程(对初学者很有帮助)

    - **局部变量**:以小写字母或下划线开头的变量,作用域限于当前块。 - **实例变量**:以`@`开头的变量,属于特定对象,可以在该对象的任何方法中访问。 - **类变量**:以`@@`开头的变量,属于整个类,可以在该类的...

    RubyUsers'Guide

    在Ruby中,有不同类型的变量,包括全局变量、实例变量、局部变量和类常量。了解它们的作用域和使用方式对于编写清晰且高效的Ruby代码至关重要。 8. 方法和类 Ruby中的方法定义了对象的行为,而类则是构造对象的蓝图...

    ruby 程序设计

    - **局部变量**:作用域仅限于定义它的方法内部。 - **实例变量**:以`@`开头的变量,可以在对象的所有方法之间共享。 - **类变量**:以`@@`开头的变量,可以在类的所有实例之间共享。 - **全局变量**:以`$`开头的...

    Ruby入门教程

    - **3.8.1 局部变量**:作用域限于定义它的方法内。 - **3.8.2 实例变量**:属于特定对象的变量。 - **3.8.3 类变量**:被所有实例共享。 - **3.8.4 全局变量**:在整个程序范围内可见。 - **3.8.5 常量**:一旦定义...

    RUBY基础入门指南

    - **局部变量**:作用域仅限于定义它们的方法或代码块。 - **实例变量**:以`@`开头,属于特定对象。 - **类变量**:以`@@`开头,属于类的所有实例。 - **全局变量**:以`$`开头,在整个程序中可用。 - **常量**:以...

    ruby 中文教程 源代码

    - **变量的作用域**:局部变量、实例变量、类变量、全局变量等,每种变量都有不同的作用范围。 - **数据类型**:基本类型如整数、浮点数、字符串、布尔值等,以及复杂类型如数组、哈希表等。 - **条件判断与循环语句...

Global site tag (gtag.js) - Google Analytics