在我的文件存储库中,当调用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
来创建自己的自定义例外吗?
答案 0 :(得分:8)
也许请阅读documentation:
如果您正在设计需要创建自己的异常的应用程序,建议您从
Exception
类派生自定义异常。最初认为自定义异常应该来自ApplicationException
类;但实际上并没有发现增加显着的价值。
至于是否有更好的例外 - 如果您不想定义自己的例外,有些人可能会考虑抛出ArgumentOutOfRangeException
。
答案 1 :(得分:3)
假设它取决于您计划处理异常的方式。抛出特定的异常会让你回答它们,嗯,特别是。例如:
try
{
}
catch(FileSizeExceededException ex)
{
}
catch(StorageCapacityExceededException ex)
{
}
答案 2 :(得分:3)
我会分别使用ArgumentException
和InvalidOperationException
。
答案 3 :(得分:1)
到目前为止你所拥有的是好的,但我个人会抛出System.ArgumentException
(带有详细信息)。