加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何吞下所有的异常并保护我的应用程序不会崩溃?

发布时间:2020-12-15 04:01:13 所属栏目:百科 来源:网络整理
导读:我发现几个C#应用程序崩溃响应错误条件,如obj = null或obj.member = null.很多时间,obj从3rdPartyApp的界面. 并导致3rdPartyApp和MyCsApp一起崩溃. 如何在所有可能的区域添加异常处理,以便我的应用程序能够在这些灾难性的情况下生存下去?将try-catch添加到
我发现几个C#应用程序崩溃响应错误条件,如obj = null或obj.member = null.很多时间,obj从3rdPartyApp的界面.
并导致3rdPartyApp和MyCsApp一起崩溃.

如何在所有可能的区域添加异常处理,以便我的应用程序能够在这些灾难性的情况下生存下去?将try-catch添加到所有地方是一个挑战,并从情况中恢复.

如何以现实,可靠和防弹的方式实现这一目标?

[更新:行业自动化控制]

结构体:

GUI(asp.net,c) – RuntimeApp(C) – MyCsApp(cs) – 3rdPartyApp(Cs)

正常程序:

> HostApp – (通过以太网Cabele连接) –
MyCsApp
>运算符 – GUI – RuntimeApp –
MyCsApp

异常情况:

>一些非标准操作程序;
>发生了一些硬件问题;
>等

我最好处理所有的异常情况.
最重要的是,我必须考虑如何从情况中恢复.

解决方法

首先治愈这种疾病是有意义的,找出为什么会导致崩溃,确保代码由于obj = null或类似而崩溃 – 使用异常处理和吞咽所有异常只是掩盖了问题….这就是它不用于!听起来好像有很多的代码气味触发了崩溃 – 保护你的应用程序免于崩溃不是正确的方法来处理它,只是使事情变得更糟?

好的,你可以按照John Saunders和pm100的建议来做,但是以一种方式来处理它,看看是什么根本原因,不要把它当作一个“魔法银弹”,在一天结束时,代码与第三方应用程序交互需要彻底调试…

例如

object foo = null;
bar baz;

// ....
// foo is now set by thirdparty app

if (foo != null && foo is bar)  baz = (bar)foo as bar;

if (baz != null){

  // Continue on,baz is a legitimate instance of type 'bar'

}else{

  // Handle it gracefully or throw a *user defined exception*

}

注意’as’如何用于检查’foo’是否为’bar’实例的正确类型 – 现在与此进行比较,这是一个典型的代码气味…

object foo = null;
bar baz;

// foo is now set by thirdparty app - ARE YOU REALLY SURE ITS NON-NULL?
// IS IT REALLY OF TYPE 'BAR'?

baz = foo; // CRASH! BANG! WALLOP! KERRUNCH!

希望这可以帮助,最好的祝福,汤姆.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读