例如,这是一个标准的if
语义:
if (condition)
do stuff
end
我希望能够做的是以这样的方式重写if
,如果抛出异常,我可以做一些错误处理。
ruby有没有办法重新定义预先存在的语法?如果是这样,怎么样?
编辑:
让我们说在if条件下,在条件if(my_object.my_method)
中调用nil方法。如果未定义my_object
,则ruby会抛出错误。我希望能够改变方式,如果它可以捕获错误的行为。 (在我的具体情况下,它会通过电子邮件向我发送堆栈跟踪...但是电子邮件是很容易的部分。)
答案 0 :(得分:0)
最简单的方式是使用异常处理来包装脚本,我敢打赌,通过使用load或require,可以毫不费力地完成。否则你要谈的是(a)重写Ruby的工作方式,或者(b)在加载时修改AST。
答案 1 :(得分:0)
我认为不需要重新定义红宝石的行为。
确保你的应用程序有一个主要的方法,所以你可以用异常处理来包装它。
begin
# main method
rescue => msg # by default it will catch only StandartError
# send email "hi, you have a problem in you application"
end
答案 2 :(得分:0)
不,你不能在Ruby程序中改变Ruby的语法或语义。您可能希望使用Perl6或Lisp。