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
听起来确实合适:“当参数的值超出所调用方法定义的允许值范围时引发的异常。”还引用了文档,并提供了类似(和更新的)指导。