Pos*_*Guy 9 .net c# error-handling exception-handling
如果我有以下内容,实际上对于任何检查IsNullOrEmpty并且它变为空的字符串,应该抛出什么样的异常类型,并且它不是方法的参数?
我总是很难选择异常类型,因为它们中有很多这么多.这只是从web.config获取一个值并检查SandboxSoapApiUsername是否返回空.
if(string.IsNullOrEmpty(ConfigUtility.SandboxSoapApiUsername))
throw new WTF do I throw here??? ahhh
Run Code Online (Sandbox Code Playgroud)
它可能取决于使用/上下文对吗?好吧,我将使用返回的字符串来设置类私有字段.所以我需要在过程的早期检查它是否为空字符串而不是以后(而不是依赖其他代码来检查与私有字段相关的属性,我将设置ConfigUtility.SandboxSoapApiUsername).
由于我将每个ConfigUtility.MEthodName设置为此类的属性将在SOAP请求中使用,我认为可能UriFormatException在这里是合适的,即使这不是Uri?
dtb*_*dtb 11
.NET Framework中的方法通常会区分为null参数传递的无效值.我认为如果值为null,则应抛出Argument Null Exception,如果无效则抛出Argument Exception.
if (arg == null)
throw new ArgumentNullException("arg", "argcannot be null");
if (arg == string.Empty)
throw new ArgumentException("arg cannot be an empty string", "arg");
Run Code Online (Sandbox Code Playgroud)
如果该值不是参数,但是,例如,在初始化期间加载,我认为无效的操作异常是合适的:
if (string.IsNullOrEmpty(ConfigUtility.SandboxSoapApiUsername))
throw new InvalidOperationException("Cannot initialize because " +
"SandboxSoapApiUsername not configured");
Run Code Online (Sandbox Code Playgroud)
blo*_*art 10
这取决于字符串来自何处.参数可能会导致ArgumentNullException.配置可能会抛出ConfigurationException(这似乎适用于这种情况).或者你当然可以创建自己的.
在抛出new异常时(而不是简单地执行a throw),您将花费大部分时间从下面的列表中挑选.
1)
除非你从app.config或web.config中选择设置,否则这可能没有意义:
如果应用程序尝试将数据读取或写入配置文件但不成功,则抛出ConfigurationException异常.可能的原因可能包括配置文件中格式错误的XML,文件权限问题以及值无效的配置属性.
2)
这不是一个论据,所以这个没有多大意义.
3)
这是三者中最好的,因为对象将处于无效状态.但是,根据您的配置设置的大小,我宁愿自己派生出Exception System.Exception.
有两种思想流派来自 - *.框架团队中的两个不同的开发人员表达了他们认为你应该继承的不同观点,我坚持杰弗里里希特的观点.System.Exception和ApplicationException
如果以上所有听起来像woffle,那么你可以从列表中选择一个你认为最相关的.
*看起来MSDN现在同意它的框架开发者,ApplicationException是一个设计错误
| 归档时间: |
|
| 查看次数: |
14071 次 |
| 最近记录: |