实例讲解Ruby线程局部域变量

我们知道,在Ruby语言中存在一些内置变量,这些变量实现的功能不尽相同。下面就让我们一起来看看有关Ruby线程局部域的一些介绍。#t#

Ruby线程局部域变量之$!

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

  1. def exception   
  2. begin   
  3. raise "exception test."   
  4. ensure   
  5. puts $!   
  6. end   
  7. end   
  8. exception  

 

结果:

 

 
 
 
  1. simple.rb:58:in `exception': 
    exception test. (RuntimeError)   
  2. from simple.rb:64   
  3. exception test. # $!中的值  

 

 

Ruby线程局部域变量之$@

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

 
 
 
  1. def exception   
  2. begin   
  3. raise "exception test."   
  4. ensure   
  5. puts $@   
  6. puts "$@ size is:#{[email protected]}"   
  7. end   
  8. end   
  9. exception  

 

结果:

 
 
 
  1. simple.rb:58:in `exception': 
    exception test. (RuntimeError)   
  2. from simple.rb:65   
  3. simple.rb:58:in `exception' #$@中的值,
    是一个数组,第一个元素是错误发生的行数,
    第二个是异常的内容。下面打印了数组的长度   
  4. simple.rb:65   
  5. $@ size:2   

 

THE END