C# 实现异常处理,阻止异常的发生并修复。求高手

老秋先生 2013-03-12 12:01:35
我的想法是想要在C#实现这样一个功能。

当程序出现错误时,程序去寻找解决方案库,将所有已知的错误和解决方式序列化存储起来,如果本地找不到,则去服务器找。
现在我的实现思路是这样子,程序启动时,如果要打开一个窗体,需要从主程序端获取,获取完了之后,我想要将其使用try-catch包围起来,现在的问题是应该如何包围,并且当出现错误时解决完了之后,应该如何让程序继续运行。
现在想到的办法就是在Appliction.Run这个方法使用try-catch包围起来,并且捕捉异常,捕捉到异常之后,就去寻找解决方案,但是这样子做却需要程序重启才能够修复错误,是否有不需要程序重启便能解决的办法?例如我有一个天马行空的想法,每个对象被获取之后,便启动一条线程,一旦这条线程出现了错误,则将其暂停,并保存未保存的数据,序列化保存起来,然后执行修复,修复完了之后,再将子线程重启,恢复到错误前的样子。这样是否可行?有没办法行得通,求高手指点
...全文
330 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
老秋先生 2013-04-13
  • 打赏
  • 举报
回复
解决了 虽然没有想象中的那么完美,但是通过我借鉴微软的解决方案机制,也是上次在修复网络的时候想到的。 1、在本地寻找解决方案如果找不到则去服务器寻找。 2、找到了解决方案之后进行执行分为运行时解决和重启解决。
stonespace 2013-03-12
  • 打赏
  • 举报
回复
try-catch就是用来实现这个目标的,如果你能恢复就在catch里面恢复,把Run方法包起来是最后一道防线,其实只有在出错的地方附近才知道如何恢复程序,所以try-catch应该设置在每个可能发生异常的地方, 否则你在run方法周围要恢复异常,不符合程序逻辑局部化的原则,run周围的try-catch可以用,但一般只用来把异常写入日志然后就退出程序,
winner2050 2013-03-12
  • 打赏
  • 举报
回复
如果你恢复的功能还是出错呢? 都已经崩溃了,你还指望下次能正常运行?
gzw13999 2013-03-12
  • 打赏
  • 举报
回复
只有try catch 代码都异常了不做这样的处理编译器也不知道下面怎么去处理。
  • 打赏
  • 举报
回复
如楼上所说,一般错误很难恢复的。我平常除了cache一些I/O,WebException用于恢复外,其他的cache基本只是用于添加相应的信息,用于Debug。
effun 2013-03-12
  • 打赏
  • 举报
回复
你的想法很好,但实现起来并不是太靠谱,因为你不可能穷尽所有异常的情况,而且有些问题可能是重启也不能解决的问题,比如断网。另外,“未保存的数据”这个概念很难界定,应该怎么样才能在catch里获取到这些数据呢?我想你会说使用临时文件存放,OK,这是一个办法,就象Word的自动恢复一样,但这样也仅限于特定的业务功能,并且你的程序要能够支持临时文件的写入和读取。更极端的一种情况,假如是由于数据本身引发的异常,在恢复之后必定再次引发异常,那将会进入一个无限的报错-恢复的死循环。

110,536

社区成员

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

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

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