8

私のファイル リポジトリでは、InsertFile()メソッドが呼び出されたときに次の例外をスローします。

  • アップロードファイルサイズの制限を超えた場合
  • ストレージ容量を超えたとき

現時点ではApplicationException、関連するメッセージをスローしています。

public void InsertFile(HttpPostedFile uploadedFile)
{
    if (uploadedFile.ContentLength > FileSizeLimit)
    {
        throw new ApplicationException("File size limit exceeded.");
    }

    if (uploadedFile.ContentLength + FileStorageUsage > FileStorageCapacity)
    {
        throw new ApplicationException("File storage capacity exceeded.");
    }

    // ...
}

質問:

ここで使用すべきより良い例外クラスはありますか?

または、から派生して独自のカスタム例外を作成する必要がありApplicationExceptionますか?

4

4 に答える 4

8

多分ドキュメントを読んでください:

独自の例外を作成する必要があるアプリケーションを設計している場合は、Exceptionクラスからカスタム例外を派生させることをお勧めします。当初、カスタム例外はApplicationExceptionクラスから派生する必要があると考えられていました。ただし、実際には、これが重要な価値を追加することはわかっていません。

スローするより良い例外があるかどうかについて-ArgumentOutOfRangeException独自の例外を定義したくない場合は、スローすることを検討する人もいます。

于 2013-05-17T06:51:07.033 に答える
3

例外の処理方法に依存するとします。特定の例外をスローすると、具体的に対応できます。例えば:

try
{
}
catch(FileSizeExceededException ex)
{
}
catch(StorageCapacityExceededException ex)
{
}
于 2013-05-17T06:54:51.653 に答える
3

それぞれと を使用しArgumentExceptionますInvalidOperationException

于 2013-05-17T06:56:12.957 に答える
1

あなたがこれまでに持っているものは大丈夫ですが、私は個人的にSystem.ArgumentException(詳細なメッセージ付きで)代わりにスローします.

于 2013-05-17T06:53:41.833 に答える