C#异常处理,怎样在代码级别知道一个错误的具体类型
本人刚学C#,问题比较小白,当抛出一个异常后,比如IOExceptionex;读写异常,我怎么知道究竟是哪种错误类型(文件已存在?被占用?等等),ex.Message仅仅...
本人刚学C#,问题比较小白,当抛出一个异常后,比如IOException ex;读写异常,我怎么知道究竟是哪种错误类型(文件已存在?被占用?等等),ex.Message仅仅是一串不固定的字符串,所以我不好判断啊,谢谢各位
展开
2个回答
展开全部
可以按照错误类型来分别捕获的
例如
try{
----代码
}
catch (ArgumentException ex)
{
// 进到这里说明发生了参数错误
}
catch(ArgumentNullException ex)
{
// 进到这里表示发生了参数为空错误
}
已知的错误类型都可以在后面一直 这样catch下去,你也可以自定义错误类型
System名称空间中常用的异常类 有以下一些
异常类名称 简单描述
MemberAccessException 访问错误:类型成员不能被访问
ArgumentException 参数错误:方法的参数无效
ArgumentNullException 参数为空:给方法传递一个不可接受的空参数
ArithmeticException 数学计算错误:由于数学运算导致的异常,覆盖面广。
ArrayTypeMismatchException 数组类型不匹配
DivideByZeroException 被零除
FormatException 参数的格式不正确
IndexOutOfRangeException 索引超出范围,小于0或比最后一个元素的索引还大
InvalidCastException 非法强制转换,在显式转换失败时引发
MulticastNotSupportedException 不支持的组播:组合两个非空委派失败时引发
NotSupportedException 调用的方法在类中没有实现
NullReferenceException 引用空引用对象时引发
OutOfMemoryException 无法为新语句分配内存时引发,内存不足
OverflowException 溢出
StackOverflowException 栈溢出
TypeInitializationException 错误的初始化类型:静态构造函数有问题时引发
NotFiniteNumberException 无限大的值:数字不合法
希望能帮到你……
例如
try{
----代码
}
catch (ArgumentException ex)
{
// 进到这里说明发生了参数错误
}
catch(ArgumentNullException ex)
{
// 进到这里表示发生了参数为空错误
}
已知的错误类型都可以在后面一直 这样catch下去,你也可以自定义错误类型
System名称空间中常用的异常类 有以下一些
异常类名称 简单描述
MemberAccessException 访问错误:类型成员不能被访问
ArgumentException 参数错误:方法的参数无效
ArgumentNullException 参数为空:给方法传递一个不可接受的空参数
ArithmeticException 数学计算错误:由于数学运算导致的异常,覆盖面广。
ArrayTypeMismatchException 数组类型不匹配
DivideByZeroException 被零除
FormatException 参数的格式不正确
IndexOutOfRangeException 索引超出范围,小于0或比最后一个元素的索引还大
InvalidCastException 非法强制转换,在显式转换失败时引发
MulticastNotSupportedException 不支持的组播:组合两个非空委派失败时引发
NotSupportedException 调用的方法在类中没有实现
NullReferenceException 引用空引用对象时引发
OutOfMemoryException 无法为新语句分配内存时引发,内存不足
OverflowException 溢出
StackOverflowException 栈溢出
TypeInitializationException 错误的初始化类型:静态构造函数有问题时引发
NotFiniteNumberException 无限大的值:数字不合法
希望能帮到你……
追问
我的意思是文件访问时IOException异常,这种异常可能包括1.文件已存在2.文件被其它程序占用,我如何具体知道到底是哪个(1和2里的哪个错误),有没有一些静态属性可以比较(就像c++里有宏可以比较),ex.Message的话它的字符串具体值难以确定
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询