- PR -

セッターで値が規定外の時って

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-02 11:40
どうも、「避けられるものだ == 例外を投げるべきではない」
のように見えてしまうので (いや、私がそう読んでしまったので) 補足。

例外処理に頼らずにチェックできるものを、検証メソッドでチェックするのは基本ですよね。
今回はそうではなく、「プロパティであることと、規定外 (業務続行不可能) だった場合」
の話なので当てはまらないことに注意ですね。

.NET には、チェック例外と非チェック例外なんて概念はないです。
田中さんの例であげると、検証部分はここになります。

コード:

    If (value < 1) Then


「そういう値なんて入ってこないようにする」それは当たり前です。
が、すり抜けてきた場合は、"本当の意味での" 例外ですよね。

その場合はもう例外を投げるしかないです。
業務が続行できませんし、バグが見えにくくなりますから。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-02-02 12:37
引用:

プロパティのセッターに関しては私も Kazuki さんと同じく ArgumentException をよく使います。



なぜみんな ArgumentException ???

「引数の値が想定範囲外」なら ArgumentOutOfRangeException を使いましょうよ (^^;

ArgumentException は、それ以外の「不正な引数」の場合に投げるのが適切です。

あと、参照型のプロパティの場合、null が許容できない仕様なら ArgumentNullException を投げますね。
takacini
常連さん
会議室デビュー日: 2005/12/27
投稿数: 24
お住まい・勤務地: 東京都
投稿日時: 2006-02-02 20:15
引用:

渋木宏明(ひどり)さんの書き込み (2006-02-02 12:37) より:

「引数の値が想定範囲外」なら ArgumentOutOfRangeException を使いましょうよ (^^;
ArgumentException は、それ以外の「不正な引数」の場合に投げるのが適切です。
あと、参照型のプロパティの場合、null が許容できない仕様なら ArgumentNullException を投げますね。



するどいツッコミ、ありがとうございます(^^;;
一応代表格として ArgumentException だけを引き合いに出してしまいました。

#めんどくさがってはいけませんね。。。(自分に苦笑)
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-02-04 14:09
引用:

渋木宏明(ひどり)さんの書き込み (2006-02-02 12:37) より:

引用:

プロパティのセッターに関しては私も Kazuki さんと同じく ArgumentException をよく使います。



なぜみんな ArgumentException ???

「引数の値が想定範囲外」なら ArgumentOutOfRangeException を使いましょうよ (^^;

ArgumentException は、それ以外の「不正な引数」の場合に投げるのが適切です。

あと、参照型のプロパティの場合、null が許容できない仕様なら ArgumentNullException を投げますね。




引用:

takaciniさんの書き込み (2006-02-02 20:15) より:

するどいツッコミ、ありがとうございます(^^;;
一応代表格として ArgumentException だけを引き合いに出してしまいました。



これらのやり取りを見ていて思ったのですが、もしや全部 Exception じゃ駄目なんですか?
どのような場合は、どれを使うというルールのようなものがあるようですが、どうやって調べているのでしょう?

#実は、一覧表のようなものがあればいいなぁ、と思っている・・・
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2006-02-04 16:56
引用:

これらのやり取りを見ていて思ったのですが、もしや全部 Exception じゃ駄目なんですか?
どのような場合は、どれを使うというルールのようなものがあるようですが、どうやって調べているのでしょう?

#実は、一覧表のようなものがあればいいなぁ、と思っている・・・



System名前空間の一覧ぐらい見ようよ…その中のxxxExceptionがシステムで用意されている例外です(あがったものはすべてこれ)。使用法のルールはそのクラスの説明に書いてあります。
それ以外の例外はケースバイケース。

# 追記 つ例外階層

[ メッセージ編集済み 編集者: ya 編集日時 2006-02-04 17:00 ]
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-02-04 19:10
引用:


yaさんの書き込み (2006-02-04 16:56) より:

# 追記 つ例外階層


こんなところにあったんですね。
実は例外階層のリンクは見かけたのですが「階層」という単語がイメージと違っていたので違うものだと思っていました。

スキルアップ/キャリアアップ(JOB@IT)