c#异常处理语句

一、C# 异常处理语句
    异常就是程序运行中发生的错误,异常处理是程序设计的一部分。错误的出现并不总是编写应用程序者的原因,有时应用程序会因为终端用户的操作而发生错误。无论如何,在编写程序前,都应预测应用程序和代码中出现的错误。
1.异常处理
异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C#异常处理是建立在四个关键词之上的:try、catch、finally 和 throw 。try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个catch 块。catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。finally: finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果打开一个文件,不管是否出现异常文件都要被关闭。当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。

2.捕获异常
捕获异常是通过 try..catch 语句实现的,语法格式如下

其中,tny 关键字标识了一个有异常的代码块,后跟一个或多个 catch 块。而 catch关键字表示异常的捕获。


编写程序1,利用 try...catch 语句捕获数组的越界问题。
(1)在 Visual Studio  中,新建名称为“Project1”的文件。
(2)在代码编辑区域输入以下代码。

本例演示了捕获异常。在代码中,首先定义一个数组 myint,并为其赋值;然后通过 for 循环进行遍历,需要注意的是,由于循环变量i应该小于数组 myint 中所有元素的总数,但是当书写为“i<=myint.Length;”时,就会造成数组的越界问题;接着,再将这段有异常的for循环语句放入到 try 语句中,并通过 catch 语句捕获异常,描述出造成异常的原因。

运行结果如下图显示

3.清除、处理异常
如果用户对产生的异常不进行处理,只是通过 catch 语句进行捕获,则仍然无法消除为错误所分配的资源。所以需要使用 try..finally 语句清除异常,语法格式如下:

finally 语句虽然可以消除 try 语句块中分配的任何资源,但是它不管异常是否被抛出,程序都会执行。因此,增加 catch 语句,就可以完美地合并两种错误处理技术,即捕获异常、消除并执行应用程序。语法格式如下:

编写程序2,输出尝试除以零所引发的异常。
(1)在 Visual Studio 中,新建名称为“Project2”的文件。
(2)在代码编辑区域输入以下代码。

在代码中,首先定义了一个数组 myint ,并为其赋值;接着通过 for 循环,输出 720除以每个数组元素的值,但是由于数组中有个元素值为。,所以引发了一个异常,该异常的原因是“尝试除以零”。运行结果如下:

编写程序3,利用 trny...catch...final 语句清除异常,确保程序正常运行。
(1)在 Visual Studio 中,新建名称为“Project3”的文件。
(2)在代码编辑区域输入以下代码。

在上面代码的基础上加一个头文件”using System“,本段代码是将有异常的 for 语句放入到 try 语句块中,然后在 catch语句块中捕获到异常,最后在 finally 语句块中放入要执行的代码。

运行结果如下图:

4.引发异常
        有时在编写程序时,需要故意引发异常,以便捕获到异常的信息。而throw语句就是用于主动引发一个异常。异常类可以是系统预定义的类,也可以是用户自定义的类,而异常信息通常都表现为一个字符串。
        编写程序,在 Program 类中定义一个整型的私有静态方法,该方法含有一个字符串类型的参数。然后通过该方法将一个不能转换成整数的字符串转换成整数,并引发异常。 

(1)在 Visual Studio 中,新建名称为“Project4”的文件。

(2)在代码编辑区域输入以下代码。

本代码将字符串类型的数据转换成为整型数据,如果无法转换就抛出一个异常。

(1)在代码中,首先自定义一个整型的静态私有成员函数ConvertStringTolnt,在该函数的括号里定义一个字符串类型的形参 mystr ,用于接收Main 方法传递过来的数据。
(2)在 ConvertStringTolnt 方法中,首先定义变量 outnum ,用于存储转换好的整型数据,因此需要使用 try...catch 语句捕获该变量的异常,然后在 catch 语句中,抛出异常的原因。
(3)在 Main 方法中,对 ConvertStringTolnt 方法进行调用,但在调用时也需要使用 try...catch 语句捕获该方法引发的异常,并描述出来。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值