优化.NET异常处理

博客围绕.NET 程序的异常处理展开。强调要站在异常必然发生的角度编写处理程序,介绍了处理未预料异常的方法,如在程序入口使用 try - catch 并记录异常。还阐述了全局异常处理、工作线程中的异常处理,以及利用 Publisher/subscriber 设计模式的异常处理程序块,包括配置文件等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function StorePage() { d=document; t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():''); void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }

理解异常是一定会发生的

n 大多数的软件系统都不是百分之百可靠的!

n 要站在异常一定可能会发生的角度来编写异常处理程序,应对程序有可能发生的错误。

n 建立一个良好的异常处理策略

处理未预料的异常

n 确保所有程序的入口都使用了try-catch

n catch中截获所有的异常

n 异常处理技术

n 记录异常

n 在文件中记录异常

n 在数据库中记录异常

n eventlog中记录异常

n 发送email通知异常

n 异常产生时,用友好(user-friendly)的方式通知用户

全局异常处理

Application.ThreadException 事件,只用在主线程中

在发生未捕获线程异常时发生,该事件使应用程序可以在从某窗口过程收到线程异常时智能地处理异常。将您的事件处理程序附加到 ThreadException 事件以处理该异常。适当的事件处理程序并不终止线程,并且允许应用程序继续执行。

工作线程(WorkerThreads)中的异常

n 编写多线程代码时,必须考虑在工作线程中出现的异常

n 在线程的入口使用try-catch

n 使用delgate或其他的方式将发生的异常通知给主线程

异常处理程序块

n Publisher/subscriber设计模式

n 下载异常处理程序块http://www.microsoft.com/downloads/details.aspx?FamilyID=8ca8eb6e-6f4a-43df-adeb-8f22ca173e02&DisplayLang=en

n 编译工程

n 在新的工程中添加引用

n 引入名称空间Microdoft.ApplicationBlock.ExceptionManagement

n 使用ExceptionManager.Publish()来发布异常

n 配置app.config文件启用异常管理

n .config文件中配置一些信息可以添加自己的异常处理模块

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<section name="exceptionManagement" type="Microsoft.ApplicationBlocks.ExceptionManagement.ExceptionManagerSectionHandler,Microsoft.ApplicationBlocks.ExceptionManagement" />

</configSections>

<exceptionManagement mode="on">

<publisher mode="on" assembly="Microsoft.ApplicationBlocks.ExceptionManagement"

type="Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher"

logname="Northwind Exceptions Log"

applicationname="Northwind Traders Orders" />

</exceptionManagement>

</configuration>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值