RubyCocoa で Cocoa のメソッドの引数が不足しているときどの例外は発生させるべきか?
ようやくリズムがちょっと戻ってきたような。
[rubycocoa-devel:335]の話。以前に、Cocoa のメソッド呼び出し時に引数が不足していると nil を補完して呼び出してしまう機能を廃止した。この機能はハマりポイントになってもメリットが少ないと考えたためだ。で、その際はあまり考えずに OSX::OCMessageSendException を投げるようにしたのだけど、あらためて考えてみると ruby 上で同様の状況のときと同じ ArgumentError を投げたほうがよいのでは?と思うわけ。
なぜかっていうと、呼び出し先のメソッドが Objective-C と ruby のどちらで実装されているかってことは重要ではないから。そんなことを気にして rescue 書くのってなんかおかしいよな、メッセージはメッセージなのだ。
begin
obj.some_method(arg1, arg2)
rescue OSX::OCMessageSendException, ArgumentError # <- why?
# do something
end
というわけで個人的には ArgumentError に変更することに完全に傾いてるのだけど、意見とか希望があれば ML かコメントでもお願いします。
他の例外についても調べないとなあ、でも優先度はあまり高くないなあ。