質問
C# では、コンストラクタで例外をスローするのはお作法としてよいのでしょうか?
C++ とは異なり、GC がメモリを解放してくれるので
コンストラクタで例外を投げても、よしなに解放処理が走るため例外をスローしても問題ないのでは?と考えています。
※アンマネージリソースの確保がない場合。
以下コメントアウトしている箇所での、例外スローについて悩んでいます。
コメントアウトを解除してもよいかどうか、お知恵をお貸しいただけないでしょうか。
該当のソースコード
C#
1/// <summary> 2/// コンストラクタ 3/// </summary> 4public Score(int score) 5{ 6 // 生成されるインスタンスが 0-10 の範囲内であることを保証したい 7 // if (_score < 0 || 10 < _score) throw new ArgumentOutOfRangeException(); 8 _score = score; 9}
使用サンプル
C#
1[TestCase(-1)] 2[TestCase(11)] 3public void ExceptionScoreTest(int roll) 4{ 5 Assert.That(() => new Score(roll), Throws.TypeOf<ArgumentOutOfRangeException>()); 6}
補足
この手の質問・記事は web ページにいくつかありましたが、
賛否両論であったり、記事のページが数年前のもの、また .NetFramework のバージョンも当時と異なるため
本質問を投稿させていただきました。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/22 08:13 編集
2019/09/22 08:14
2019/09/22 08:18
2019/09/22 08:29
2019/09/22 08:38 編集