中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
异常管理
作者:佚名 时间:2006-09-30 13:48 出处:微软MSDN 责编:月夜寒箫
              摘要:异常管理

作者:Angela Crocker、Andy Olsen和Edward Jezierski 

适用于:

Microsoft® .NET 应用程序

摘要:

学习向 Microsoft .NET 应用程序公开数据的最佳方式,以及如何实现一个有效的策略以便在分布式应用程序的层间传递数据。(本文包含一些指向英文站点的链接。)

目录

 

  • 简介

     

  • 将关系数据映射到业务实体

     

  • 实现数据访问逻辑组件

     

  • 实现业务实体

     

  • 事务处理

     

  • 验证

     

  • 异常管理

     

  • 授权与安全性

     

  • 部署

     

  • 附录及其合作者

当 .NET 应用程序出现错误时,通常的建议是发出异常而不是从方法返回错误值。这一建议暗示了您编写数据访问逻辑组件和业务实体组件的方式。异常大体上有两种:

技术异常,它包括:

 

  • ADO.NET

     

  • 数据库连接

     

  • 资源(如数据库、网络共享、消息队列等)不可用

    业务逻辑异常,它包括:

     

  • 验证错误

     

  • 实现业务逻辑的存储过程中的错误

    在数据访问逻辑组件中管理异常的建议

    数据访问逻辑组件应该传播异常,并且仅在能够使客户端对异常的管理更加容易时才包装异常类型。将异常包装为两种主要异常类型(技术异常和业务异常)有利于各种可能的调用程序的异常处理结构和异常发布逻辑。

    您的应用程序应当发布异常信息。可以将技术异常发布到一个由系统管理员或 Windows 管理规范 (WMI) 监视工具(如 Microsoft Operations Manager)监视的日志中;将业务异常发布到一个特定的应用程序日志中。通常,应允许从数据访问逻辑组件传播异常并允许由调用程序发布异常,以便您了解异常的整个环境。

    以下示例说明了这些建议:

    public class CustomerDALC
                {
                public void UpdateCustomer(Dataset aCustomer)
                {
                try
                {
                // 更新数据库中的客户...
                }
                catch (SqlException se)
                {
                // 捕获并包装异常,然后重新发出
                throw new DataAccessException("数据库不可用", se);
                }
                finally
                {
                // 清除代码
                }
                }
                }

    在业务实体组件中管理异常的建议

    业务实体组件应当向调用程序传播异常。在业务实体组件执行验证或者当调用程序试图执行某一操作而未提供该操作所需的数据时,业务实体组件也可以产生异常。

    以下示例显示了业务实体组件如何产生异常。在此示例中,如果没有提供客户的名字,Update 方法将发出一个异常:

    public class CustomerEntity
                {
                public void Update()
                {
                // 检查用户已提供了所需数据。这里是客户
                // 的名字
                if (FirstName == "" )
                {
                // 发出一个已定义的新的应用程序异常
                throw new MyArgumentException("您必须提供名字。");
                }
                ...
                }
                }

    有关在 .NET 应用程序中处理异常的详细信息,请参阅 Exception Management in .NET。可以从 Exception Management Application Block 提供的 ApplicationException 类或 BaseApplicationException 类中继承自定义技术异常和自定义业务异常。

  • 关闭本页
     
    首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
    Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有