版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Visual C#.NET编程技术,王 强,Email:,中科院计算所计算机职业技能培训中心,第五讲 C#的异常处理,本讲的主要内容: 异常处理机制 异常处理方法 自定义异常处理,异常: 程序在运行过程中所发生的错误事件(如数组越界、文件操作时未找到文件、除法溢出等) 而这些错误在设计时不能准确地识别出但又可能会发生或者不会发生。 特点: 必须是程序在执行过程中所产生的错误。 它可能产生也可能不产生,具体取决于当时的执行环境。 一旦产生出该错误,将导致运行阶段环境终止及程序流程发生改变。,程序设计中的几种类型的错误 编译错误(语法错误); 运行时错误(在运行过程中所发生的错误) 不可预料的逻辑
2、错误(设计不当所造成的,并且有较强的隐蔽性) 可预料的运行异常(它是由系统的运行环境所造成的)。,异常处理的优点(OOP方式的错误处理编程) 能将“错误处理”代码与“常规功能”代码相分离; 能将错误沿调用栈向上传播; 能按错误类型和错误对象分组,分门别类地加以处理。 允许类似于 Switch Case 语句的分类过滤错误例外 非结构化错误处理的缺点 代码很难阅读、调试和维护 容易忽视错误,C#的异常处理机制,主要体现在“抛出异常”并“捕获异常”这两个层次。 (1)抛出异常: 当程序执行过程中产生异常时,运行系统将抛出异常类对象(它代表某一异常类型的错误事件,为System.Exception类
3、或其子类的对象。)。 (2)捕获异常: 用户程序或运行系统可以捕获该异常类对象(在函数的调用栈中查找能处理此异常事件的程序为止)并相应地给出处理的方法(代码)。,如何捕获异常: 采用try,catch, finally语句块 try语句块: 它指定可能会产生异常的语句范围,也即为catch规定异常捕获的语句范围。 编程格式如下: try 可能会产生异常的语句块; catch语句块: 它指明需要捕获异常事件的类型并针对该类型的异常所对应的处理方法(代码)。 C#中的catch编程格式可以为如下的某一种(其中第一种格式由于有异常参数,这样能获得引发异常时的信息)。,格式一: catch(异常事件的
4、类型 对象名) /并相应地给出处理的方法(代码); 格式二: catch(异常事件类的类型) /注意该类必须为Syste.Exception类或其子类 /并相应地给出处理的方法(代码); 格式三: catch /并相应地给出处理的方法(代码); 在不能确定会发生异常类型的情况下采用它,多catch语句块编程时的要点,应从特殊到一般进行匹配(先将特殊类型的异常事件放在前面,再一般类型的异常事件) try 与catch之间不能有其他语句(不能被隔断)。如: try int x=1; /错误,不能被隔断 catch(Exception e) ,finally: 它指定一代码块,不管是否有异常产生或是
5、否捕获住该异常,程序都从此处继续向后执行。从而达到提供统一的出口(如在其中实现关闭文件、清除系统资源等)。 示例:,using System; class TestApp static int zero=0; public static void Main() try /划定程序出所可能产生的异常范围 int a=100/zero; Console.WriteLine(a=0,a);/产生异常时将不会执行该语句 /以下捕获程序中所可能产生的各种异常,但遵守从特殊到一般匹配原则 catch(DivideByZeroException e) Console.WriteLine(Overflow E
6、xception:+e.Message); catch(Exception e) /利用e.Message()获得异常产生时的信息内容 Console.WriteLine(There is an Exception:+e.Message); catch /注意该种catch语句 Console.WriteLine(There is an Exception); Console.WriteLine(After exception Handling !); ,异常捕获的几种方式,try-catch组合: 利用这种组合可以实现捕获和处理异常。 注意: 在C#中允许既没有定义异常类型又没有定义异常对象
7、变量的catch语句。 它通常是在不能取得确定会发生的异常类型的情况下用的。 但一条try语句后只能有一条这样的catch语句并且只能排在其它的catch语句之后。 try-finally组合: 利用这种组合可以实现无论try语句中是否产生异常,finally中的语句都要执行 以保证能完成异常的清理工作。 try-catch-finally组合: 利用这种组合可以实现当try语句中产生异常时先执行catch中的异常处理的代码 然后再执行finally中的语句。 如果没有产生异常,也要执行finally中的语句。,异常的抛出,抛出的方式 系统自动抛出的异常:程序中出现系统中定义的异常时,可以由系
8、统自动来抛出它 使用“throw 异常事件(对象名)” 来抛出该种类型的异常事件,以便上一级的调用者来捕获并处理它。 系统中预定义的异常类: 在System命名空间中定义出了大量的常用的异常类,如: ArgumentException DivideByZeroException IndexOutOfRangeException等,System.Exception 类,提供关于异常的信息,此类是所有异常的基类。 Exception 包含下列属性,它们可以帮助标识异常的代码位置、类型、帮助文件和原因: StackTrace:获取当前异常发生时调用堆栈上的帧的字符串表示形式(它描述调用堆栈的内容,其中首先显示最近的方法调用)。 Message:解释异常原因的错误信息或空字符串 ()。 HelpLink:获取或设置指向此异常所关联帮助文件的链接。 Source:获取或设置导致错误的应用程序或对象的名称。 TargetSite:获取引发当前异常的方法。,声明自己的异常类,编程要求: 从System 名字空间中的某一系统异常类(如Exception类)来派生;异常类的名称应以“Exception”结尾。 声明自己的异常类的成员数据或成员方法,以反映用户自定义的错误信息。同时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026上半年贵州事业单位联考玉屏侗族自治县招聘41人备考题库有答案详解
- 初级社工考试题库及答案
- 测量理论考试试卷及答案
- 颈椎骨折选择试题及答案
- 2025-2026人教版二年级数学上期末卷
- 2025-2026五年级信息技术期末测试粤教版
- 肠道菌群与代谢病线粒体功能障碍
- 肠道-脑轴在麻醉药品依赖性评价中的意义
- 肝血管瘤临床路径变异的观察策略
- 探店汽修店卫生管理制度
- 2026 年初中英语《状语从句》专项练习与答案 (100 题)
- 2026年辽宁省盘锦市高职单招语文真题及参考答案
- 简爱插图本(英)夏洛蒂·勃朗特著宋兆霖译
- 焊接专业人才培养方案
- 第二届全国技能大赛江苏省选拔赛焊接项目评分表
- 糖尿病护士年终总结
- 第20课 《美丽的小兴安岭》 三年级语文上册同步课件(统编版)
- 糖尿病基础知识培训2
- 研学旅行概论第六章
- GB/T 22176-2023二甲戊灵乳油
- 根据信用证制作商业发票、装箱单、装船通知
评论
0/150
提交评论