c异常处理课件_第1页
c异常处理课件_第2页
c异常处理课件_第3页
c异常处理课件_第4页
c异常处理课件_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

异常处理本讲要点学习目标掌握抛出异常、自定义异常理解异常处理机制、异常处理方式了解异常的定义、异常处理的特点重点掌握异常处理的使用方法定义自己的异常类难点异常处理的正确使用,即异常处理的条件异常处理的概念异常(Exception):指由于程序运行时发生的错误,从而导致程序错误结束。异常处理:当程序运行过程中发生了某个异常现象,系统将产生一个相应的异常类对象,并把它交给系统处理,系统负责找到处理错误的代码并执行之。

如:{输入数据x;5/x;}如果输入X的值为0,产生异常。{输入数据x;if(x==0){提示输入数据有误;}else5/x;每种异常类型都是一个类分为两类:

System.SystemException

System.ApplicationException代码段有可能发生异常的时候,我们应该把该代码放置在try中.

捕捉到异常后的处理方法放置到catch中。为每个可能的Exception定制解决方法,例如:

try

{

..........

}catch(FormatException)

{

MessageBox.Show("......");

}catch(overflowException)

{

MessageBox.Show("......");

}catch(Exceptionex)

{

MessageBox.Show("......");

}

执行完catch字句后,程序将继续执行,除后catch字句中有return,throw或者exit.

必须正确排列捕获异常的catch字句

范围小的Exception放在前面的catch字句中,

如果Exception之间有继承关系,把子类放在前面的catch字句中,把父类放到后面的catch字句中。最后放置catch(Exceptionex)。使用try-catch-finally来确保一些收尾工作(finally段里的语句总是在try和catch之后执行

),例如:

try

{

<<opendatabaseconnection>>

<<performdatabasework>>

}catch

{

<<dealwithanyexception>>

}

finally

{

<<closedatabase>>

}异常之体系异常类一、基类Exception异常类二、常见的异常类1、SystemException类:该类是System命名空间中所有其他异常类的基类。(建议:公共语言运行时引发的异常通常用此类)2、ApplicationException类:该类表示应用程序发生非致命错误时所引发的异常(建议:应用程序自身引发的异常通常用此异常类三、与参数有关的异常类

此类异常类均派生于SystemException,用于处理给方法成员传递的参数时发生异常1、ArgumentException类:该类用于处理参数无效的异常,除了继承来的属性名,此类还提供了string类型的属性ParamName表示引发异常的参数名称。2、FormatException类:该类用于处理参数格式错误的异常。

异常处理语句的使用格式1:try-catch语句

try语句块中包含可能产生异常的代码,catch中指定对异常的处理class

trycatchstatement{

public

voidtest(){

try{

intb=int.Parse("abc");}

catch(FormatExceptionex){

Console.WriteLine(ex.Message);}}}格式2:try-finally语句

try语句块包含可能产生异常的代码finally中指定最终都要执行的子语句与格式1比较,程序不提供对异常的处理,只保证finally语句块中的代码一定被执行class

trycatchstatement{

public

voidtest(){

try{

intb=int.Parse("abc");}

finally{

Console.WriteLine("执行结束");}}}格式3:try-catch-finally(常用格式)try语句块中包含可能产生异常的代码,catch中指定对异常的处理,finally中指定最终都要执行的子语句,放在所有catch后,只能出现一次class

trycatchstatement{

public

voidtest(){

try{

intb=int.Parse("abc");}

catch(FormatExceptionex){

Console.WriteLine(ex.Message);} finally

{

Console.WriteLine("执行结束");

} }}throw语句throw语句可以重新引发一个已捕获的异常,还可以引发一个预定义的或自定义的异常,可被外围的try语句接收,throw引发的异常称为显示引发异常class

trycatchstatement{

public

voidtest(){

try{

intb=int.Parse("abc");

stringstr=null;

if(str=null){

ArgumentExceptionex=new

ArgumentNullException();

throwex;}}

catch(ArgumentExceptionex){

Console.WriteLine(ex.Message);}

finally{

Console.WriteLine("执行结束");}}}0自定义异常除了可以使用系统预定义的异常以为,还可以根据需要自己定义异常。由Exception或者Exception类的子类派生。

步骤:1.自定义异常类,继承自某个异常2.重写构造函数和属性(Message属性),或者声明方法3.在可能出现问题的地方调用class

ageexception

:

Exception{

string_message;

//获得父类的错误信息内容

publicageexception(){_message=base.Message;}

publicageexception(stringstrmessage){_message=strmessage;}

//重写message属性

public

override

stringMessage{

get{

return_message;}}

//或者定义方法输出异常信息

public

voidpm(){

Console.WriteLine(_message);}}try{

Console.WriteLine("请输入年龄");

intage=int.Parse(Console.ReadLine());

if(age>20||age<10){

stringmessage="你输入的年纪不符合要求!";

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论