ApplicationException还是创建自定义exception?
在我的文件存储库中,当调用InsertFile()
方法时,我将抛出以下exception:
- 超出上载文件大小限制时
- 超过存储容量时
目前我只是抛出一个带有相关消息的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."); } // ... }
问题:
我应该在这里使用更好的exception类吗?
或者我应该通过从ApplicationException
派生来创建自己的自定义exception?
也许阅读文档 :
如果您正在设计需要创建自己的exception的应用程序,建议您从
Exception
类派生自定义exception。 最初认为自定义exception应该来自ApplicationException
类; 然而,在实践中,尚未发现这增加了重要价值。
至于是否有更好的抛出exception – 如果你不想定义自己的exception,有些人可能会考虑抛出ArgumentOutOfRangeException
。
假设它取决于您计划如何处理exception。 抛出特定的exception可以让你回答它们,特别是。 例如:
try { } catch(FileSizeExceededException ex) { } catch(StorageCapacityExceededException ex) { }
我会分别使用ArgumentException
和InvalidOperationException
。
那么你到目前为止还没有,但我个人会抛出一个System.ArgumentException
(带有详细消息)。