尝试捕获块的内部机制?.net 框架实际上是如何做到的



我知道如何使用 try catch finally 块。每个人都这样做。

但是我想知道这个强大功能的内部实现。它是否像 SQL 中的提交或回滚方法一样工作?

使用 try catch 是否会导致性能问题?

我们是否需要为每个小函数使用 try catch?

.net 程序是否提前一步并将结果保留在 ram 中?

有人可以向我们解释一下.net框架如何处理这个非常有用的功能吗?我想要一个深刻的技术答案。(幕后花絮)

它是否像 SQL 中的提交或回滚方法一样工作?

不,它没有。Clr 不保存变量的旧值。如果引发异常,clr 只会跳回到堆栈中的前一种方法。

使用 try catch 是否会导致性能问题?

是的,确实如此。如果引发异常,clr 将创建堆栈跟踪。这是一项非常昂贵的操作。但是,仅尝试/捕获块不会产生严重的性能副作用。

我们是否需要为每个小函数使用 try catch?

这取决于您的编码风格。

有人可以向我们解释一下.net框架如何处理这个非常有用的功能吗?我想要一个深刻的技术答案。(幕后花絮)

有一篇关于它的好文章:http://codinglight.blogspot.ru/2008/08/recently-i-received-question-on.html

最新更新