`
wsql
  • 浏览: 11789322 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

第十二章、C#异常处理(try...catch...)

 
阅读更多

12.1、异常的嵌套

try……catch……是可以嵌套的,如果内层try出现异常,内层的catch就会捕获这个异常,然后处理,处理完成之后,在外层的try中就认为内层的都是正常的,外层不会出现异常;但是如果在内层try中出现异常之后,如果在catch中用throw抛出了异常,那么内层的执行就从throw开始终止了,哪怕内层还有很多没执行,哪怕内层还有循环,也直接跳到外层的catch中了,外层就会捕获到内层抛出的异常了。

12.2、多个catch处理不同的异常

一段程序在运行的时候,由于不同的原因,是可以出现各种不同的异常的,通常希望针对每种不同的异常做不同的处理。那么就需要有多个catchtry……catch……是可以有多个catch的,每个catch后面都可以定义一个特定的异常,当try出现异常的时候,会将异常与catch中定义的异常做对比,如果能比对上,那么就执行catch中的语句。这样就能处理特定异常了。每次的try出现异常之后,只会执行一个catch,不会执行多个。所以每次只能有一个catch是满足某个异常的(Exception除外)。

Exception是所有异常的父类,不论哪一种异常,都能与Exception比对上。所以,Exception不能放在所有的异常catch之前,除非只有Exception一个catch

try

{

int i = 1;

while (true)

{

i++;

if (i > 5) break;

Console.WriteLine("Thread {0} started", Thread.CurrentThread.Name);

Thread.Sleep(2000);

Console.WriteLine("Thread {0} completed", Thread.CurrentThread.Name);

}

}

catch (ThreadAbortException e)

{

Console.WriteLine("Thread Exception");

}

catch (IndexOutOfRangeException e)

{

Console.WriteLine("Thread Exception");

}

catch (Exception e)

{

Console.WriteLine("Thread Exception");

}

12.3、常用的异常类型

Exception

所有异常对象的基类。

SystemException

运行时产生的所有错误的基类。

IndexOutOfRangeException

当一个数组的下标超出范围时运行时引发。

NullReferenceException

当一个空对象被引用时运行时引发。

InvalidOperationException

当对方法的调用对对象的当前状态无效时,由某些方法引发。

ArgumentException

所有参数异常的基类。

ArgumentNullException

在参数为空(不允许)的情况下,由方法引发。

ArgumentOutOfRangeException

当参数不在一个给定范围之内时,由方法引发。

InteropException

目标在或发生在CLR外面环境中的异常的基类。

ComException

包含COM类的HRESULT信息的异常。

SEHException

封装Win32结构异常处理信息的异常。

SqlException

封装了SQL操作异常。

SystemException

其他用户可处理的异常的基本类

ArgumentException

方法的参数是非法的

ArgumentNullException

一个空参数传递给方法,该方法不能接受该参数

ArgumentOutOfRangeException

参数值超出范围

ArithmeticException

出现算术上溢或者下溢

ArrayTypeMismatchException

试图在数组中存储错误类型的对象

BadImageFormatException

图形的格式错误

DivideByZeroException

除零异常

DllNotFoundException

找不到引用的DLL

FormatException

参数格式错误

IndexOutOfRangeException

数组索引超出范围

InvalidCastException

使用无效的类

InvalidOperationException

方法的调用时间错误

MethodAccessException

试图访问思友或者受保护的方法

MissingMemberException

访问一个无效版本的DLL

NotFiniteNumberException

对象不是一个有效的成员

NotSupportedException

调用的方法在类中没有实现

NullReferenceException

试图使用一个未分配的引用

OutOfMemoryException

内存空间不够

PlatformNotSupportedException

平台不支持某个特定属性时抛出该错误

StackOverflowException

堆栈溢出

2009-03-27
分享到:
评论

相关推荐

    C#教程(语言规范)

    7.5.2.2 第二阶段 ... 128 7.5.2.3 输入类型 ... 129 7.5.2.4 输出类型 ... 129 7.5.2.5 依赖 ... 129 7.5.2.6 输出类型推断 ... 129 7.5.2.7 参数类型显式推断 ... 129 7.5.2.8 精确推断 ... 129 7.5.2.9 ...

    c#学习笔记.txt

    try-catch 语句由一个 try 块和其后所跟的一个或多个 catch 子句(为不同的异常指定处理程序)构成。try-catch 语句采用下列形式之一: try try-block catch (exception-declaration-1) catch-block-1 catch ...

    CLR.via.C#.(中文第3版)(自制详细书签)

    第12章 泛型 12.1 Framework类库中的泛型 12.2 Wintellect的Power Collections库 12.3 泛型基础结构 12.3.1 开放和封闭类型 12.3.2 泛型类型和继承 12.3.3 泛型类型同一性 12.3.4 代码爆炸 12.4 泛型接口 ...

    c#3.0语言规范高清PDF

    12 1.6.1 成员 .................................................................................................................................................... 12 1.6.2 可访问性 .....................

    Visual C# 2010程序设计教程PPT

    异常处理及try-catch-finally语句 第4章 数组与集合 数组的概念及定义 一维数组的使用 理解结合的概念及使用 常用的集合类 第5章 C#面向对象程序设计基础 面向对象程序设计的理念 类的概念...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    第12章 泛型 12.1 Framework类库中的泛型 12.2 Wintellect的Power Collections库 12.3 泛型基础结构 12.3.1 开放和封闭类型 12.3.2 泛型类型和继承 12.3.3 泛型类型同一性 12.3.4 代码爆炸 12.4 泛型接口 ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    第12章 泛型 12.1 Framework类库中的泛型 12.2 Wintellect的Power Collections库 12.3 泛型基础结构 12.3.1 开放和封闭类型 12.3.2 泛型类型和继承 12.3.3 泛型类型同一性 12.3.4 代码爆炸 12.4 泛型接口 ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    第12章 泛型 12.1 Framework类库中的泛型 12.2 Wintellect的Power Collections库 12.3 泛型基础结构 12.3.1 开放和封闭类型 12.3.2 泛型类型和继承 12.3.3 泛型类型同一性 12.3.4 代码爆炸 12.4 泛型接口 ...

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    第12章 ado.net数据访问技术 212 实例126 连接加密的access数据库 213 实例127 使用odbc dsn连接sql server数据库 214 实例128 使用ado.net对象录入数据 217 实例129 利用存储过程录入数据 219 实例130 使用...

Global site tag (gtag.js) - Google Analytics