ApplicationException或创建自定义异常

本文关键字:自定义异常 创建 ApplicationException | 更新日期: 2023-09-27 18:14:07

在我的文件存储库中,当调用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派生创建自己的自定义异常吗?

ApplicationException或创建自定义异常

不妨阅读文档:

如果您正在设计一个需要创建自己的异常的应用程序,建议您从Exception类派生自定义异常。最初认为自定义异常应该从ApplicationException类派生;然而,在实践中,并没有发现这增加了显著的价值。

至于是否有更好的异常可以抛出——如果你不想定义自己的异常,有些人可能会考虑抛出ArgumentOutOfRangeException

假设这取决于您计划如何处理异常。抛出特定的异常可以让你对它们做出特定的响应。例如:

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

我将分别使用ArgumentExceptionInvalidOperationException

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