监控进程发生异常

沐浴晨光啊 2011-12-06 03:34:07
有2个程序,A.exe和B.exe
当B.exe发生未知异常时,如何在A.exe里面知道B.exe发生异常了,并且可以在A.exe里获取B.exe的异常信息?
...全文
116 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
沐浴晨光啊 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wangdoublejia 的回复:]
.NET捕获是在自己程序里边捕获自己的,,不能跨程序捕获[/Quote]

举个例子说,
我用C#写了个测试程序,然后点击一个按钮抛出一个异常,但是我的程序里并没有做任何的捕获异常的处理。
然后程序会自动的弹出一个捕获异常的窗口,并且包含异常信息。
这个是怎么实现的呢?
令狐苦瓜 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hbzhlt 的回复:]
引用 10 楼 sdl2005lyx 的回复:
引用 6 楼 hbzhlt 的回复:

引用 5 楼 sandy945 的回复:
B中出现异常写到日志中

A可以监控指定目录(日后存储的目录) 当有新日志的时候 就做 相应处理


你好,B是不可修改的程序。有没有别的办法?


明确告诉你,没有可能,发生异常,必须有源头发往它处,既然你原来的程序没有这个机制,
别的程序有……
[/Quote]



.NET捕获是在自己程序里边捕获自己的,,不能跨程序捕获
沐浴晨光啊 2011-12-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sdl2005lyx 的回复:]
引用 6 楼 hbzhlt 的回复:

引用 5 楼 sandy945 的回复:
B中出现异常写到日志中

A可以监控指定目录(日后存储的目录) 当有新日志的时候 就做 相应处理


你好,B是不可修改的程序。有没有别的办法?


明确告诉你,没有可能,发生异常,必须有源头发往它处,既然你原来的程序没有这个机制,
别的程序有怎么能获取到信息!
[/Quote]

那.Net是怎么捕获的?
sdl2005lyx 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hbzhlt 的回复:]

引用 5 楼 sandy945 的回复:
B中出现异常写到日志中

A可以监控指定目录(日后存储的目录) 当有新日志的时候 就做 相应处理


你好,B是不可修改的程序。有没有别的办法?
[/Quote]

明确告诉你,没有可能,发生异常,必须有源头发往它处,既然你原来的程序没有这个机制,
别的程序有怎么能获取到信息!
绿领巾童鞋 2011-12-06
  • 打赏
  • 举报
回复
恩,又学到东西了
阿非 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hbzhlt 的回复:]
引用 5 楼 sandy945 的回复:
B中出现异常写到日志中

A可以监控指定目录(日后存储的目录) 当有新日志的时候 就做 相应处理


你好,B是不可修改的程序。有没有别的办法?
[/Quote]
我不确定程序是否可以监控进程并记录错误信息.
令狐苦瓜 2011-12-06
  • 打赏
  • 举报
回复
在B中try catch捕获异常后,
System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
Info.FileName = "A.exe";//程序名
Info.Arguments = “information”;//启动参数
启动一个线程去执行Info,
调用A程序,将捕获的异常传递过去,意思是说,B是主动,而你要用来监控的A程序是被动执行的。
沐浴晨光啊 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sandy945 的回复:]
B中出现异常写到日志中

A可以监控指定目录(日后存储的目录) 当有新日志的时候 就做 相应处理
[/Quote]

你好,B是不可修改的程序。有没有别的办法?
阿非 2011-12-06
  • 打赏
  • 举报
回复
B中出现异常写到日志中

A可以监控指定目录(日后存储的目录) 当有新日志的时候 就做 相应处理
沐浴晨光啊 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nube163 的回复:]
try……catch……捕捉异常,然后:
1.进程间通信http://blog.csdn.net/tanliyoung/article/details/1222186
2.共享文件
[/Quote]

前提条件,B程序是不能修改的,所以try{}catch{}不可行。
沐浴晨光啊 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
A中实时跟B通信,否则你想要检测什么异常?
[/Quote]

因为不知道B里会发生什么样的未捕获异常,导致弹出.Net的错误对话框。
就是想在A里监控B里没有捕获到的异常


备考:
B是一套成形的软件系统,但是可能其中某些程序写得不好,所以会有未知异常发生。
现在就是想开发一个A程序,来监控上述未知异常,然后收集异常信息。
nube163 2011-12-06
  • 打赏
  • 举报
回复
try……catch……捕捉异常,然后:
1.进程间通信http://blog.csdn.net/tanliyoung/article/details/1222186
2.共享文件
bdmh 2011-12-06
  • 打赏
  • 举报
回复
A中实时跟B通信,否则你想要检测什么异常?

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧