官方首页
 计算机科学与技术
 湖畔文学
 蓝色湖畔桃园
 湖畔艺术
 湖畔科技
 本站留言
热门关键字:    dreamlandcn.com    蓝色湖畔
 >>相关文章
·c#网络应用编程基础 第3章
·c#网络应用编程基础 第3章
·c#网络应用编程基础 第2章
·c#网络应用编程基础 第2章
·c#网络应用编程基础 第2章
·c#网络应用编程基础 第2章
·c#网络应用编程基础 第1章
·蓝色湖畔论坛(桃园)开张 版主
·Intel发布4款首批无卤素环
·测试版Office Live
 >>点击排行TOP10
·多种排序算法,多种语言讲解(前言)
·多种排序算法,多种语言讲解(简单选
·多种排序算法,多种语言讲解(堆排序
·多种排序算法,多种语言讲解(冒泡排
·多种排序算法,多种语言讲解(快速排
·【其它欣赏】少儿不宜的设计
·多种排序算法,多种语言讲解(树形选
·多种排序算法,多种语言讲解(希尔排
·多种排序算法,多种语言讲解(交换排
·VC中使用GetModuleFil
·C#中DataSet绑定XML的代
·多种排序算法,多种语言讲解(总结)
·多种排序算法,多种语言讲解(直接插
·【其它欣赏】一辆卡车车身广告引发P
·多种排序算法,多种语言讲解(归并排
 
 当前位置:网站首页 > 计算机科学与技术 > .net编程 > C#.net > 浏览正文
c#网络应用编程基础 第2章 数据类型与流程控制(4)
作者:佚名    来源:本站原创    点击数:   更新时间:2008年09月10 【字体:

2.3.5  异常处理

    异常是指在程序执行过程中出现的错误情况或意外行为。对程序中的异常处理是非常重要的,一般情况下,一个比较完整的程序中要尽可能考虑可能出现的各种异常,比如对数据库进行操作时可能的异常等等。

1. try-catch语句

    C#提供了利用try-catch捕捉异常的方法,以帮助编程者处理异常。在try块中的任何语句产生异常,都会执行catch块中的语句来处理异常,而不是直接显示异常信息。try-catch语句的常用形式为:

try

{

    语句序列

}

catch(异常类型 标识符)

{

    异常处理

}

    在程序运行正常的时候,执行try块内的程序。如果try块中出现了异常,程序就转移到catch块中执行。

    catch子句中,可以指定异常类型和标识符,一旦指定,就相当于声明了一个异常变量,这个异常变量是一个作用范围为整个catch块的局部变量,在catch块的执行过程中,异常变量描述了当前正在处理的异常,可以通过它来引用异常对象。如果在catch子句中没有定义异常变量,则该子句称为一般catch子句,其中的代码在事先不能确定会发生什么样的异常的情况下执行。

    需要说明的是,一个try块后可以跟一个或多个catch块。如果有多个catch块,除了一个一般catch块外,其他每一个catch块可以用于处理一个特定类型的异常,这样使得程序可以更好地处理一些特殊异常,对于这些catch块,应该把处理特殊异常的catch块放在处理一般catch块的上面。

2. try-catch-finally语句

    如果try后有finally块,不论是否出现异常,也不论是否有catch块,finally块总是会执行的,使用跳转语句也不能跳出finally块的执行。一般在finally块中做释放资源的操作,比如关闭打开的文件、关闭与数据库的连接等等。

    try-catch-finally语句的常用形式为:

try

{

    语句序列

}

catch(异常类型 标识符)

{

    异常处理

}

finally

{

    语句序列

}

3. throw语句

    有时候在方法中出现了异常,不一定要立即把它显示出来,而是想把这个异常抛出并让调用这个方法的程序进行捕捉和处理,这时可以使用throw语句。它的格式为:

throw [表达式];

    可以使用throw语句抛出表达式的值。注意表达式类型必须是System.Exception或从System.Exception派生的类的类型。

    throw也可以不带表达式,不带表达式的throw语句只能用在catch块中,在这种情况下,它重新抛出当前正在由catch块处理的异常。

【例2-15】异常处理。

using System;

namespace TryCatchExample

{

    class Program

    {

        static void F()

        {

            try

            {

                G();

            }

            catch (Exception err)

            {

                Console.WriteLine("方法F中捕获到: " + err.Message);

                // 重新抛出当前正在由catch 块处理的异常err

                throw;

            }

        }

        static void G()

        {

            throw new Exception("方法G中抛出的异常。");

        }

        static void Main()

        {

            try

            {

                F();

            }

            catch (Exception err)

            {

                Console.WriteLine("方法Main中捕获到:" + err.Message);

            }

            Console.ReadLine();

        }

    }

}

    输出结果:

方法F中捕获到:方法G中抛出的异常。

方法Main中捕获到:方法G中抛出的异常。

下一页
本文共 2 页,第  [1]  [2]  页

Tags:dreamlandcn.com
Google
 
关于我们 | 服务指南 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 诚征英才  | 友情链接
Powered by ACTCMS 2.0
Copyrights©2008-2009 蓝色湖畔 www.dreamlandcn.comAll Rights Reserved.