C# ApplicationException还是创建自定义异常?

C# ApplicationException还是创建自定义异常?,c#,asp.net,.net,exception,exception-handling,C#,Asp.net,.net,Exception,Exception Handling,在我的文件存储库中,当调用InsertFile()方法时,我将抛出以下异常: 超过上载文件大小限制时 超过存储容量时 目前,我正在抛出一个带有相关消息的ApplicationException: public void InsertFile(HttpPostedFile uploadedFile) { if (uploadedFile.ContentLength > FileSizeLimit) { throw new ApplicationExcept

在我的文件存储库中,当调用
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
类;然而,在实践中,还没有发现这会增加显著的价值


关于是否有更好的异常抛出-有些人可能会考虑抛出一个如果你不想定义你自己的异常。

< p>嗯,你到目前为止还行,但是我个人会扔一个<代码>系统。AguMutExtExt[/Cuff](用详细的消息)代替。

< P>假设这取决于你如何处理异常。抛出特定的异常可以让你对它们做出特别的反应。例如:

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

我会分别使用
ArgumentException
InvalidOperationException

在客户端代码中,会有一些检查,例如
IsFileSizeExceeded()
,因此我不必处理特定的异常,以便向用户发送反馈。我只需要把它们记录下来。谢谢你在
ApplicationException
上的提醒
ArgumentOutOfRangeException
听起来确实合适:“当参数的值超出所调用方法定义的允许值范围时引发的异常。”还引用了文档,并提供了类似(和更新的)指导。