ApplicationException还是创建自定义异常?

时间:2013-05-17 06:47:52

标签: c# asp.net .net exception exception-handling

在我的文件存储库中,当调用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 个答案:

答案 0 :(得分:8)

也许请阅读documentation

  

如果您正在设计需要创建自己的异常的应用程序,建议您从Exception类派生自定义异常。最初认为自定义异常应该来自ApplicationException类;但实际上并没有发现增加显着的价值。

至于是否有更好的例外 - 如果您不想定义自己的例外,有些人可能会考虑抛出ArgumentOutOfRangeException

答案 1 :(得分:3)

假设它取决于您计划处理异常的方式。抛出特定的异常会让你回答它们,嗯,特别是。例如:

try
{
}
catch(FileSizeExceededException ex)
{
}
catch(StorageCapacityExceededException ex)
{
}

答案 2 :(得分:3)

我会分别使用ArgumentExceptionInvalidOperationException

答案 3 :(得分:1)

到目前为止你所拥有的是好的,但我个人会抛出System.ArgumentException(带有详细信息)。