程序try-catch的绝对健壮性之嵌套

写程序的过程中,我们对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捕获,这样是不是就绝对的健壮了?

原文地址:https://www.cnblogs.com/jerryqi/p/9734455.html

时间: 2024-09-30 05:58:08

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

编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。要求程序必须具备足够的健壮性,不管用户输入什 么样的内容,都不会崩溃。

import java.util.*; class AException extends Exception { String a; AException() { a="输入有误"; } public String toString() { return a; } } class A { public static void main(String args[]) { while(1>0) { Scanner sc = new Scanner(System.in); System

软件构造-犯错的艺术——健壮性与正确性,异常,防御式编程,debugging与test的思考与总结

健壮性与正确性 健壮性与正确性是不同的——一个倾向于使程序尽可能保持运行,即使遇到错误,一个倾向于使程序尽可能正确,不在意保持运行 异常 异常分为两种——checked exception与unchecked exception 二者的区别在于: checked exception需要显式的处理,说白了就是编程者必须要么用catch抓住它,然后在try中想办法处理掉,要么显式的将这个异常扔到调用的上一级方法,也就是甩锅.总而言之,你永远不能无视checked exception unchecke

健壮性与可靠性

健壮性(鲁棒性)和可靠性是有区别的,两者对应的英文单词分别是 robustness 和 reliability.健壮性主要描述一个系统对于参数变化的不敏感性,而可靠性主要描述一个系统的正确性,也就是在你固定提供一个参数时,它应该是产生稳定的,能预测的输出.例如一个程序,它的设计目标是获取一个参数并输出一个值.假如它能正确完成这个设计目标,就说它是可靠的.但在这个程序执行完毕后,假如没有正确释放内存,或者说系统没有自动帮它释放占用的资源,就认为这个程序及其"运行时"不具备健壮性或者鲁棒性

关于提高代码质量的思考之提高代码健壮性

接着上期的拓展性之后,今天谈谈代码的健壮性.代码的健壮性又称鲁棒性,是高质量代码的一个重要指标. 有人分析了印度软件行业比中国好的一个原因:印度的一个老程序员,月代码量在一千行左右,这一千行代码,算法平实,但都是经过仔细推敲,实战检验的代码,不会轻易崩溃的代码.我们的程序员,一天就可以写出一千行代码,写的代码简短精干,算法非常有技巧性,但往往是不安全的,不完善的.印度人的程序被称作:傻壮.但程序就得这样! 那么如何写出一个代码简短精干,算法非常有技巧性,而又非常安全的代码呢?我逛了很多论坛,发现

用ORACHK自动化检查数据库系统的健壮性

1.orachk工具主要用途 (1)主动检查您的整个软件在操作系统.CRS.数据库.高可用等层面中的严重问题,以便于IT部门整改,提升系统的稳定性 (2)对于您系统中存在的风险提供简单化和合理化的诊断和分析建议. (3)对系统中存在的健康风险提供汇总信息,并且能够向下钻取到特定的问题和对应的解决方案 (4)对检查结果进行量化评分(100分制),内容非常的全面,通过得分直观判断健康程度 2.运行注意要点 (1)orachk不支持在root用户下运行,需要在oracle或grid用户下运行 (2)如

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

这些第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 1.chardet chardet可以自动检测文本的编码.如果安装了,可以用于自动检测网页.xml的编码. 安装命令: sudo pip3.4 install chardet 如果系统自带python 3.4或以上版本,可能提示没有pip3.4,换成pip-3.x(x为python的具体版本号)试试. chardet的项目页面: https://pypi.python.org/p

代码健壮性是真的好吗?

我在看一个视频,这个视频里写的代码有这个特点,那就是它把代码写的一个方法可以多次被调用或者说叫利用也可以;同时视频也在一致强调这一点;那我就疑惑了,代码健壮性就那么好吗? 首先,你要写的一个方法能实现不同的功能,在开始设计它的时候就要考虑到各个问题的方方面面,这个对精力应该也是一个很大的消耗吧:这些代码也许写的人能轻松的能读懂,但是如果是别人来读的话,那耗费的时间和精力应该是更大的:如果是更大型的软件,恐怕程序员都要白头了吧:这难道是炫耀技术吗?这个代价也太大了! 其次,现在电脑运算速度是很快的

linux下,简单一行代码提高脚本的健壮性

前言 新来的美女同事,拿她写的脚本向我请教时,我证实了程序猿经常说的一句话:OMG,这么狗屎的代码居然是我写的!!! 问题描述: 在linux/unix写脚本时,我大多习惯在第一行加上(或许还有一大班跟我一样习惯的人): #!/usr/bin/bash 或者 #!/usr/bin/perl 或者 #!/usr/bin/python…………………… 用于操作系统执行这个脚本的时候,调用/usr/bin下的bash/perl/python解释器. 但是,这时存在两个小小问题: 1.本机的bash/p

【软件构造】第七章第一节 健壮性和正确性的区别

第七章第一节  健壮性和正确性的区别 第七章:进入软件构造最关键的质量特性 --健壮性和正确性. 本节在1-2节的基础上,重申了Robustness and Correctness的重要性,澄清了二者之 间的差异,并指明了在软件构造中处理二 者的典型技术(防御式编程.异常处理. 测试.调试等) Outline 健壮性(Robustness)和正确性(correctness) 如何测量健壮性和正确性 Notes ## 健壮性(Robustness)和正确性(correctness) [健壮性] 定