1

たとえば、標準のifセマンティクスは次のとおりです。

if (condition)
     do stuff
end

if私ができるようにしたいのは、例外がスローされた場合にエラー処理を実行できるように書き直すことです。

rubyには、既存の構文を再定義する方法がありますか?もしそうなら、どのように?

編集:if条件で、条件のnilでメソッドが呼び出されたとしますif(my_object.my_method)。が定義されていない場合my_object、rubyはエラーをスローします。エラーをキャッチできるように動作する場合は、方法を変更できるようにしたいと思います。(私の特定の状況では、スタックトレースが電子メールで送信されます...しかし、電子メールは簡単な部分です)。

4

3 に答える 3

0

いいえ、RubyプログラムでRubyの構文やセマンティクスを変更することはできません。代わりにPerl6またはLispを使用することをお勧めします。

于 2012-05-18T00:56:14.700 に答える
0

最も簡単な方法は、例外処理を使用してスクリプトをラップすることです。これは、loadまたはrequireを操作することで、手間をかけずに実行できると思います。それ以外の場合は、(a)Rubyの動作を書き直すか、(b)ロード時にASTを変更することについて話します。

于 2012-05-18T00:27:46.127 に答える
0

ルビーの振る舞いを再定義する必要はないと思います。

確かに、アプリケーションにはちょっとしたメインメソッドがあるので、例外処理でラップすることができます。

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 に答える