Enterprise Library 2.0 Hands On Lab 翻译(7):异常应用程序块(一)
2006-10-07 00:27
459 查看
练习1: 记录异常信息
通过本练习,将会在一个没有异常处理的应用程序中使用异常处理应用程序块添加本地和全局的异常处理,并记录到Windows事件日志中。
第一步
打开Puzzler.sln 项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Exception Handling\exercises\ex01,并编译。
第二步 回顾应用程序
选择Debug | Start Debugging菜单命令运行应用程序,当前应用程序并没有出现异常信息。当尝试增加一个带有数字的单词(在文本框中输入“abc123”并单击Add Word按钮)到目录中时,将会出现一个未处理的异常,调试将会中断。
选择Debug | Stop Debugging菜单命令退出应用程序并返回Visual Studio。
第三步 增加Try/Catch异常处理
1.选择PuzzlerUI项目,并选择Project | Add Reference …菜单命令,选择Browse项并添加如下程序集。
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
3.在btnAddWord_Click方法中添加如下代码,在调用AddWord 和SetError时添加try/catch区。
private void btnAddWord_Click(object sender, System.EventArgs e)
private void btnAddWord_Click(object sender, System.EventArgs e)
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
应用程序的入口点,这里提供了两个事件可以用来处理异常信息。当一个未处理的异常发生在主工作线程上时Application.ThreadException事件被触发,当异常发生在不同于UI的线程上时AppDomain.UnhandledException将会被触发。
4.添加如下异常处理程序到Startup类中。
public static void HandleException(Exception ex, string policy)
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
static void Main()
{
// TODO: Handle unhandled exceptions
Application.ThreadException +=
new ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Puzzler f = new Puzzler();
Application.Run(f);
}
8.选择Debug | Start Without Debugging菜单命令运行应用程序。在Word to check文本框中输入数字并单击Add Word按钮。将会弹出一个错误提示信息“An unhandled exception occurred and has been logged. Please contact support.”,可以在事件日志中查看异常信息。
9.关闭应用程序和Visual Studio。
更多Enterprise Library的文章请参考《Enterprise Library系列文章》
通过本练习,将会在一个没有异常处理的应用程序中使用异常处理应用程序块添加本地和全局的异常处理,并记录到Windows事件日志中。
第一步
打开Puzzler.sln 项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Exception Handling\exercises\ex01,并编译。
第二步 回顾应用程序
选择Debug | Start Debugging菜单命令运行应用程序,当前应用程序并没有出现异常信息。当尝试增加一个带有数字的单词(在文本框中输入“abc123”并单击Add Word按钮)到目录中时,将会出现一个未处理的异常,调试将会中断。
选择Debug | Stop Debugging菜单命令退出应用程序并返回Visual Studio。
第三步 增加Try/Catch异常处理
1.选择PuzzlerUI项目,并选择Project | Add Reference …菜单命令,选择Browse项并添加如下程序集。
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
3.在btnAddWord_Click方法中添加如下代码,在调用AddWord 和SetError时添加try/catch区。
private void btnAddWord_Click(object sender, System.EventArgs e)
private void btnAddWord_Click(object sender, System.EventArgs e)
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
应用程序的入口点,这里提供了两个事件可以用来处理异常信息。当一个未处理的异常发生在主工作线程上时Application.ThreadException事件被触发,当异常发生在不同于UI的线程上时AppDomain.UnhandledException将会被触发。
4.添加如下异常处理程序到Startup类中。
public static void HandleException(Exception ex, string policy)
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
static void Main()
{
// TODO: Handle unhandled exceptions
Application.ThreadException +=
new ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Puzzler f = new Puzzler();
Application.Run(f);
}
8.选择Debug | Start Without Debugging菜单命令运行应用程序。在Word to check文本框中输入数字并单击Add Word按钮。将会弹出一个错误提示信息“An unhandled exception occurred and has been logged. Please contact support.”,可以在事件日志中查看异常信息。
9.关闭应用程序和Visual Studio。
更多Enterprise Library的文章请参考《Enterprise Library系列文章》
相关文章推荐
- Enterprise Library 2.0 Hands On Lab 翻译(7):异常应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(7):异常应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(7):异常应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(7):异常应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(9):缓存应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(9):缓存应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(4):日志应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(9):缓存应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(14):加密应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(4):日志应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)
- Enterprise Library 2.0 Hands On Lab 翻译(14):加密应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(4):日志应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)
- Enterprise Library 2.0 Hands On Lab 翻译(14):加密应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)
- Enterprise Library 2.0 Hands On Lab 翻译(4):日志应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)
- Enterprise Library 2.0 Hands On Lab 翻译(9):缓存应用程序块(一)
- Enterprise Library 2.0 Hands On Lab 翻译(2):数据访问程序块(二)