zoukankan      html  css  js  c++  java
  • 程序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捕获,这样是不是就绝对的健壮了?

  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/jerryqi/p/9734455.html
Copyright © 2011-2022 走看看