写程序的过程当中,咱们对try-catch在熟悉不过了,捕获异常进行处理,以保证程序的健壮性。程序员
今日突发一想,若是咱们catch中的代码异常了怎么办?咱们作如下一种假设日志
static void Main(string[] args) { try{ //Code A } catch{ //Code B } finally{ //Code C } }
按照咱们平时常常用的,咱们在Code A的位置执行出错以后,咱们最后可能在Code B进行错误处理,而后可能在Code C处写错误日志。blog
那么问题来了,若是咱们由于某些不可预测的因素在Code B或者Code C处又出异常了怎么办?(虽然这种状况我没有遇到过,哈哈)string
那么程序员以钻牛角尖的态度实现了如下结构class
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捕获,这样是否是就绝对的健壮了?异常