程序try-catch的绝对健壮性之嵌套
写程序的过程中,我们对try-catch在熟悉不过了,捕获异常进行处理,以保证程序的健壮性。
今日突发一想,如果我们catch中的代码异常了怎么办?我们做以下一种假设
1 2 3 4 5 6 7 8 9 10 11 12 | static void Main( string [] args) { try { //Code A } catch { //Code B } finally { //Code C } } |
按照我们平时经常用的,我们在Code A的位置执行出错之后,我们最后可能在Code B进行错误处理,然后可能在Code C处写错误日志。
那么问题来了,如果我们因为某些不可预测的因素在Code B或者Code C处又出异常了怎么办?(虽然这种情况我没有遇到过,哈哈)
那么程序员以钻牛角尖的态度实现了以下结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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捕获,这样是不是就绝对的健壮了?
原创文章,转载请注明来源
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步