[转]AppDomain的两个小技巧(程序运行完毕和未处理异常的处理)
2009-07-20 14:57
411 查看
有时候,我们会需要在程序结束时进行一些处理,比如记录log日志,清除一些临时文件等工作。这时候我们可以利用AppDomain的ProcessExit事件:
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.ProcessExit += (sender, arg) =>
File.WriteAllText(@"c:\log.txt", ((AppDomain)sender).FriendlyName);
}
}
当程序运行完毕时,将会在C盘创建一个log.txt的文件,并写入我们指定的信息。一般参数中的sender为事件所属类的实例。
值得注意的是,当程序发生异常中断时,上述退出事件是不会执行的,这时候我们可以借助AppDomain的UnhandledException事件:
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += (sender, arg) =>
File.WriteAllText(@"c:\log.txt", ((Exception)arg.ExceptionObject).StackTrace);
throw new Exception("err!!");
}
}
配合着这两个事件的使用,我们可以对程序建立起完善的监督机制,再也不用担心异常发生后找不着,也不用担心日志信息记录因为出错而缺失。
转自:http://hi.baidu.com/expertsearch/blog/item/25bcd81197487806203f2e6b.html
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.ProcessExit += (sender, arg) =>
File.WriteAllText(@"c:\log.txt", ((AppDomain)sender).FriendlyName);
}
}
当程序运行完毕时,将会在C盘创建一个log.txt的文件,并写入我们指定的信息。一般参数中的sender为事件所属类的实例。
值得注意的是,当程序发生异常中断时,上述退出事件是不会执行的,这时候我们可以借助AppDomain的UnhandledException事件:
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += (sender, arg) =>
File.WriteAllText(@"c:\log.txt", ((Exception)arg.ExceptionObject).StackTrace);
throw new Exception("err!!");
}
}
配合着这两个事件的使用,我们可以对程序建立起完善的监督机制,再也不用担心异常发生后找不着,也不用担心日志信息记录因为出错而缺失。
转自:http://hi.baidu.com/expertsearch/blog/item/25bcd81197487806203f2e6b.html
相关文章推荐
- AppDomain的两个小技巧(程序运行完毕和未处理异常的处理) 捕获未处理异常
- 当在Appdomain中发生未处理异常时如何不让程序结束掉
- 程序运行时会出现 xxxx.exe 中的 0x00fa1c29 处有未经处理的异常: 0xC00000FD: Stack overflow
- 关于继承AppCompatActivity后运行报错的关于由于主题异常的处理
- 关于 AppDomain 未知异常导致进程崩溃的处理办法
- 对异常处理中的一个问题的思考(出现异常,程序仍能继续运行)
- 异常“企图释放并非呼叫方所拥有的多用户终端运行程序”的处理
- Android Studio 运行程序异常Error running app: Instant Run requires 'Tools | Android | Enable ADB integrati
- 使用两个不同类型的数据进行加法计算时,使用异常处理语句捕获由于数据类型错误而出现的异常,发生生成错误。是否继续并运行上次的成功生成?
- Android SurfaceView运行机制剖析--处理切换到后台再重新进入程序时的异常
- 关于WinCE程序在设备上运行时异常的处理
- WinForm 处理未处理的异常 Application.ThreadException + AppDomain.CurrentDomain.UnhandledException
- Android游戏开发19:SurfaceView运行机制剖析--处理切换到后台再重新进入程序时的异常
- WinForm 处理未处理的异常 Application.ThreadException + AppDomain.CurrentDomain.UnhandledException
- APP-FND-00204:并发管理器在运行并发请求xxxxx的派生并发程序 接收事务处理管理器 - RCVOLTM时出错。TM-TIMEOUT.
- winform程序不能同时开启两个应用程序的判断以及捕获全局未处理异常
- Android studio使用JNI的的异常的处理(app:compileDebugNdk)
- SWT-DESIGNER想要运行Java应用程序,必须将SWT的原生包导入到项目中,否则该项目在运行程序时会报异常
- 任何最短一段程序,一定要加异常处理,面积计算一定要验证
- mfc对话框程序在ide编译可运行,但编译完毕的debug和release版本不能运行。。后来发现原因是:用到的sqlite数据库文件没在对应目录下,而代码中没有try..catch..