异常处理

try-catch-finally块

try
{

}
catch (Exception e)when(MyFliter(e))
{

}
finally
{

}

try块为监视块,catch为异常处理快,可以多个catch类似switch判断不同异常类型。finally可有可无,无论catch不catch都会最后执行finally。
也可以用自定义的函数当过滤器。

System.Exception

Data 异常处理 是字典类
InnerException 子异常,就是才catch块中抛出的异常
Message 错误信息,文本格式
Source 出错的对象名
StackTrace 方法调用的具体信息,可以跟踪抛出异常的方法

常用异常

SystemException 其他用户可处理的异常的基本类
ArgumentException 方法的参数是非法的
ArgumentNullException 一个空参数传递给方法,该方法不能接受该参数
ArgumentOutOfRangeException 参数值超出范围
ArithmeticException 出现算术上溢或者下溢
ArrayTypeMismatchException 试图在数组中存储错误类型的对象
BadImageFormatException 图形的格式错误
DivideByZeroException 除零异常
DllNotFoundException 找不到引用的DLL
FormatException 参数格式错误
IndexOutOfRangeException 数组索引超出范围
InvalidCastException 使用无效的类
InvalidOperationException 方法的调用时间错误
MethodAccessException 试图访问私有或者受保护的方法
MissingMemberException 访问一个无效版本的DLL
NotFiniteNumberException 对象不是一个有效的成员
NotSupportedException 调用的方法在类中没有实现
NullReferenceException 试图使用一个未分配的引用
OutOfMemoryException 内存空间不够
PlatformNotSupportedException 平台不支持某个特定属性时抛出该错误
*Exception 堆栈溢出
NullReferenceException 当一个空对象被引用时运行时引发。
InvalidOperationException 当对方法的调用对对象的当前状态无效时,由某些方法引发。

ArgumentException 所有参数异常的基类。
ArgumentNullException 在参数为空(不允许)的情况下,由方法引发。
ArgumentOutOfRangeException 当参数不在一个给定范围之内时,由方法引发。
InteropException 目标在或发生在CLR外面环境中的异常的基类。
ComException 包含COM类的HRESULT信息的异常。
SEHException 封装Win32结构异常处理信息的异常。
SqlException 封装了SQL操作异常。

自定义异常

public class MyException:Exception
{
    public MyException(string message) : base("MyExecption is "+message)
    {

    }
    public MyException(string message, Exception innerException) : base("MyExecption is " + message, innerException)
    {

    }
}

一般来说只要实现构造函数就可以了

相关特性

除了使用Exception类,还可以使用特性来了解程序信息。

上一篇:Java 异常处理(1) : try-catch- finally中finally的使用


下一篇:java中针对 try,catch和finally一些总结