1

例如,这是一个标准if语义:

if (condition)
     do stuff
end

我想要做的是以if这样的方式重写,如果抛出异常,我可以做一些错误处理。

ruby 有办法重新定义预先存在的语法吗?如果是这样,怎么做?

编辑:让我们说在 if 条件下,在条件 nil 上调用一个方法if(my_object.my_method)。如果my_object没有定义,ruby 会抛出一个错误。如果行为能够捕获错误,我希望能够改变方式。(在我的具体情况下,它会将堆栈跟踪通过电子邮件发送给我......但通过电子邮件发送是很容易的部分)。

4

3 回答 3

0

简单的方法是用异常处理来包装你的脚本,我敢打赌,通过使用 load 或 require 可以毫不费力地完成。否则,您谈论的是 (a) 重写 Ruby 的工作方式,或 (b) 在加载时修改 AST。

于 2012-05-18T00:27:46.127 回答
0

我认为没有必要重新定义 ruby​​ 行为。

确保您的应用程序具有某种 main 方法,因此您可以使用异常处理来包装它。

begin  
   # main method  
rescue => msg  # by default it will catch only StandartError
   # send email "hi, you have a problem in you application"  
end
于 2012-05-18T00:46:20.710 回答
0

不,您不能在 Ruby 程序中更改 Ruby 的语法或语义。您可能想改用 Perl6 或 Lisp。

于 2012-05-18T00:56:14.700 回答