[ruby-trunk - Feature #6639][Open] ArgumentError から ArityError を分離

Issue #6639 has been reported by metanest (Makoto K.).


Feature #6639: ArgumentError から ArityError を分離

Author: metanest (Makoto K.)
Status: Open
Priority: Low
Assignee:
Category:
Target version:

=begin
ArgumentError と TypeError の違いがわかりにくい、という話がありました( #6423 )。
違いがわかりにくい原因として、メソッドやブロックの呼び出し時に、次のような感じで、
エラーの発生する場所が混在しているため、という理由が考えられます。
(1) 実引数の個数が正しいかをチェック → ダメなら ArgumentError
(2) 実引数の型(期待するメソッドがあるか)をチェック → ダメなら TypeError
(3) 実引数の値をチェック → ダメなら ArgumentError
ArgumentError のサブクラスとして ArityError を作り (1) のエラーを ArityError に
すれば、各エラーの意味が明確化するのではないかと思います。
=end

=begin
ArgumentError $B$H(B TypeError $B$N0c$$$,$o$+$j$K$/$$!"$H$$$&OC$,$"$j$^$7$?!J(B
#6423 $B!K!#(B

$B0c$$$,$o$+$j$K$/$$860x$H$7$F!"%a%=%C%I$d%V%m%C%/$N8F$S=P$7;~$K!"<!$N$h$&$J46$8$G!"(B

$B%(%i!<$NH/@8$9$k>l=j$,:.:_$7$F$$$k$?$a!"$H$$$&M}M3$,9M$($i$l$^$9!#(B
(1) $B<B0z?t$N8D?t$,@5$7$$$+$r%A%’%C%/(B $B"(B $B%@%a$J$i(B ArgumentError
(2) $B<B0z?t$N7?!J4|BT$9$k%a%=%C%I$,$"$k$+!K$r%A%’%C%/(B $B"
(B $B%@%a$J$i(B
TypeError
(3) $B<B0z?t$NCM$r%A%’%C%/(B $B"*(B $B%@%a$J$i(B ArgumentError
ArgumentError $B$N%5%V%/%i%9$H$7$F(B ArityError $B$r:n$j(B (1) $B$N%(%i!<$r(B
ArityError $B$K(B
$B$9$l$P!"3F%(%i!<$N0UL#$,L@3N2=$9$k$N$G$O$J$$$+$H;W$$$^$9!#(B
=end

ArityError$B$rF3F~$9$k;v<+BN$O!#1!#$G$b(B(2)$B$K4X$7$F$b(BNameError$B$8$c$J$$M}M3$O$J$s$8$c$$!J7?$O%A%’%C%/$7$F$J$/$F%a%=%C%I$,$"$k$+$I$&$+$7$+8+$F$J$$>l9g$,$[$H$s$I!K$H$+(B(3)$B$K4X$7$F$O(BArgumentError$B$H(BRangeError$B$N0c$$$O$J$s$8$c$$$H$+?’!9$H5?Ld$,$"$j!"$3$3$@$1@Z$j=P$7$F5DO@$9$k$N$,E,@Z$J$N$+$d$d<+?.$,$J$$$H$3$m$G$O$"$j$^$9(B

Issue #6639 has been updated by metanest (Makoto K.).

File No6639.pdf added


Feature #6639: ArgumentError から ArityError を分離

Author: metanest (Makoto K.)
Status: Open
Priority: Low
Assignee:
Category:
Target version:

=begin
ArgumentError と TypeError の違いがわかりにくい、という話がありました( #6423 )。
違いがわかりにくい原因として、メソッドやブロックの呼び出し時に、次のような感じで、
エラーの発生する場所が混在しているため、という理由が考えられます。
(1) 実引数の個数が正しいかをチェック → ダメなら ArgumentError
(2) 実引数の型(期待するメソッドがあるか)をチェック → ダメなら TypeError
(3) 実引数の値をチェック → ダメなら ArgumentError
ArgumentError のサブクラスとして ArityError を作り (1) のエラーを ArityError に
すれば、各エラーの意味が明確化するのではないかと思います。
=end

Issue #6639 has been updated by mame (Yusuke E.).

資料受け取りました。
が、ext の開発者がどう嬉しいのか理解できず、タイムアウトになる予感がします。


Yusuke E. [email protected]

Feature #6639: ArgumentError から ArityError を分離

Author: metanest (Makoto K.)
Status: Open
Priority: Low
Assignee:
Category:
Target version:

=begin
ArgumentError と TypeError の違いがわかりにくい、という話がありました( #6423 )。
違いがわかりにくい原因として、メソッドやブロックの呼び出し時に、次のような感じで、
エラーの発生する場所が混在しているため、という理由が考えられます。
(1) 実引数の個数が正しいかをチェック → ダメなら ArgumentError
(2) 実引数の型(期待するメソッドがあるか)をチェック → ダメなら TypeError
(3) 実引数の値をチェック → ダメなら ArgumentError
ArgumentError のサブクラスとして ArityError を作り (1) のエラーを ArityError に
すれば、各エラーの意味が明確化するのではないかと思います。
=end

Issue #6639 has been updated by mame (Yusuke E.).

Status changed from Open to Rejected

きしもとさん

7/21 の開発者会議にて、残念ながらこの機能は不採択と判定されました。

これを採択すると他にも細分化の要望が来るであろうことから、
Ruby として「例外を細分化する方針」をとるかどうかで議論が行われました。
しかしまつもとさんからその方針には「不安」があるとのことで、採択しない
方向となりました。


Yusuke E. [email protected]

Feature #6639: ArgumentError から ArityError を分離

Author: metanest (Makoto K.)
Status: Rejected
Priority: Low
Assignee:
Category:
Target version:

=begin
ArgumentError と TypeError の違いがわかりにくい、という話がありました( #6423 )。
違いがわかりにくい原因として、メソッドやブロックの呼び出し時に、次のような感じで、
エラーの発生する場所が混在しているため、という理由が考えられます。
(1) 実引数の個数が正しいかをチェック → ダメなら ArgumentError
(2) 実引数の型(期待するメソッドがあるか)をチェック → ダメなら TypeError
(3) 実引数の値をチェック → ダメなら ArgumentError
ArgumentError のサブクラスとして ArityError を作り (1) のエラーを ArityError に
すれば、各エラーの意味が明確化するのではないかと思います。
=end