写程序的过程中,我们对try-catch在熟悉不过了,捕获异常进行处理,以保证程序的健壮性。

今日突发一想,如果我们catch中的代码异常了怎么办?我们做以下一种假设

static void Main(string[] args)
{
try{
//Code A
}
catch{
//Code B
}
finally{
//Code C
}
} 

按照我们平时经常用的,我们在Code A的位置执行出错之后,我们最后可能在Code B进行错误处理,然后可能在Code C处写错误日志。

那么问题来了,如果我们因为某些不可预测的因素在Code B或者Code C处又出异常了怎么办?(虽然这种情况我没有遇到过,哈哈)

那么程序员以钻牛角尖的态度实现了以下结构

static void Main(string[] args)
{
try{
//Code A
try{
//Code B
}
catch{
//Code C
}
finally{
//Code D
}
//Code E
}
catch{
//Code F
}
finally{
//Code G
}
}

按照这种结构,我们在Code F和G的位置不写任何代码(不写总不会异常吧?)或者写上绝对无错的代码,主题代码还是在Code B的位置,C的位置异常处理,D的位置写日志。

那么,就算catch和finally异常了,也会被外层的catch捕获,这样是不是就绝对的健壮了?

程序try-catch的绝对健壮性之嵌套的更多相关文章

  1. 程序的健壮性Robustness

    所谓的程序健壮性是指处理异常的能力,在异常中能够独立处理异常,并且把正确的答案输出. 例如: 有一个程序能够下载一个文件到指定的路径,但是这个路径是不存在的,因此程序必须要处理这个情况. 例1:下面的 ...

  2. iOS 增强程序健壮性 - - 使用 NullSafe 对 <null> 处理

    在项目开发中,和服务端交互数据时,若服务端数据为空时,会出现 <null>,客户端解析时会 Crash,为了增强程序的健壮性,减少 Crash 的发生,可以使用 NullSafe 这个类别 ...

  3. 安装第三方Python模块,增加InfoPi的健壮性

    这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet    自动检测文本编码 2.lxml    用于解析 ...

  4. strcpy之代码的健壮性与可维护性

    strcpy   函数的原型是: char * strcpy(char * strDest,const char * strSrc);    功能:把从strSrc地址开始且含有NULL结束符的字符串 ...

  5. 使用 const 提高函数的健壮性

    使用 const  提高函数的健壮性 看到 const 关键字,C++程序员首先想到的可能是 const 常量.这可不是良好的条件 反射.如果只知道用 const 定义常量,那么相当于把火药仅用于制作 ...

  6. 人生苦短之Python函数的健壮性

    如何评论一个开发代码写的好?清晰简洁明了?No,No,一个处女座就可以写出来了,整齐地代码,详细的注释不是代码好的标准,应该说不是最重要的标准.代码写的是否健壮才是检验的重要标准. 代码的健壮性: 当 ...

  7. 测试软件稳定性、健壮性之Monkey工具--简洁与深入

    搭建环境这章节没做详细说明,因为我是前期做APP自动化是已经将 SDK 以及JDK给安装配置好了,这次是直接上来演示monkey的功能点以及运用 一.什么是稳定性测试? 通过随机点击屏幕一段时间,看看 ...

  8. 基于 fuzz 技术验证移动端 app 的健壮性

    问题定义 app发布后经常容易出现各种诡异的crash, 这些crash固然可以通过各种崩溃分析服务去定位. 但是的确很影响用户体验. 在crash分类中有一类是后端接口引发的. 比如常见的引发app ...

  9. bug:论用例健壮性的重要

    最近出了2个类似问题,此处写下,以作为警醒 问题1: 背景:电商类网站,为了增加用户回流,增加用户购买力度,做了一个和用户等级相关活动 需求:用户等级为g0 -g5,现在有一批代金券有等级领取限制.用 ...

随机推荐

  1. Rest Framework源码流程解析

    目录: 一 整体流程 二 具体流程 一 请求进来之后,都要先执行dispatch方法,dispatch方法根据请求方式的不同触发get/post/put/delete等方法 注意,APIView中的d ...

  2. BCH码

    http://baike.baidu.com/link?url=CfLtm9DigwWdup-9VJP99RG65NgaVOXfrnjT61ogP7au0QOrlypq72k67B0s1Ey-Q1yD ...

  3. linux 安装 maven

    一.下载 1.创建下载软件包目录  mkdir /home/install 2.在/home/install下载maven包,或者将下载好的maven压缩包上传至/home/install wget  ...

  4. 利用ST MCU内部的基准参考电压监测电源电压及其它

    源: 利用ST MCU内部的基准参考电压监测电源电压及其它

  5. 【Java Web】把逻辑名映射到servlet文件

    Ⅰ.请求URL Ⅱ.容器搜索DD,查找servlet-mapping <?xml version="1.0" encoding="ISO-8859-1" ...

  6. 编写Tesseract的Python扩展

    Tesseract是一个开源的OCR(光学字符识别)引擎,用于识别并输出图片中的文字.虽然和商业软件比起来识别精度不算很高,但是如果你要寻找免费开源的OCR引擎,可能Tesseract就是唯一的选择了 ...

  7. Git服务器的Gitosis安装配置及gitignore的使用方法

    Git服务器Gitosis安装设置 1.安装 openssh服务器 sudo apt-get install openssh-server openssh-client 2.创建个人公钥和私钥 在默认 ...

  8. SpringBoot Lombok

    简介 lombok是一个编译级别的插件,它可以在项目编译的时候生成一些代码.比如日常开发过程中需要生产大量的JavaBean文件,每个JavaBean都需要提供大量的get和set方法,如果字段较多且 ...

  9. vi使用技巧(转载)

    http://www.cnblogs.com/xusir/p/3245007.html 这是转载的链接

  10. 全卷积网络(FCN)与图像分割

    最近在做物体检测,也用到了全卷积网络,来此学习一波. 这篇文章写了很好,有利于入门,在此记录一下: http://blog.csdn.net/taigw/article/details/5140144 ...