Sim*_*mon 12 .net exception-handling
我有一个接受文件名作为参数的方法,所有文件名都应以'.csv'结尾.如果传递不以.csv结尾的文件名,我应该抛出哪个异常?
或者我应该采取不同的方法?
xcu*_*cud 16
ArgumentOutOfRangeException - 您所描述的内容符合超出范围的异常:
当参数的值超出被调用方法定义的允许值范围时引发的异常.
ArgumentException的用于验证的字符在路径字符串不是文件类型.
path参数是零长度字符串,仅包含空格,或包含一个或多个无效字符.
恕我直言,路径验证通过图表看起来像这样:
如果这对您来说不够描述,那么创建自己的异常类:
public class InvalidFileTypeException : System.IO.IOException
{
public InvalidFileTypeException(string path, string acceptedTypeMask)
{
this.Message = string.Format(
"File type '{0}' does not fall within the expected range: '{1}'",
path,
acceptedTypeMask);
}
}
Run Code Online (Sandbox Code Playgroud)
...
throw new InvalidFileTypeException("foo.txt", "*.csv");
Run Code Online (Sandbox Code Playgroud)
检查Framework中现有IO方法的文档.它描述了方法生成的异常.例如,检查StreamWriter.StreamWriter(String,Boolean,Encoding,Int32)构造函数,网址为http://msdn.microsoft.com/en-us/library/0wf7ab94(VS.85).aspx.我建议你保持一致的例外是IOException.然后,您可以添加描述详细信息的自定义消息.
IOException - path包含文件名,目录名或卷标语法的错误或无效语法.
在您的情况下,文件扩展名不正确,因此请告诉用户,如Throw New IOException("Invalid file extension.").
我会留下文档中描述的ArgumentException,path是一个空字符串("")."
见选择异常的正确类型扔在http://msdn.microsoft.com/en-us/library/ms229021.aspx.
| 归档时间: |
|
| 查看次数: |
12496 次 |
| 最近记录: |