美文网首页.NET
不可忽略的 try-catch-finally 性能问题

不可忽略的 try-catch-finally 性能问题

作者: 圣杰 | 来源:发表于2019-01-24 17:28 被阅读30次

是的,我曾以为try-catch-finally就类似一个if-else语句一样没有性能影响,然而实际并非如此。

首先,在没有抛出异常时,try-catch的影响与添加了一个if-else是同一个量级的。也就是说,我们完全可以忽视try catch耗费的那点性能。

然而当抛出异常时,CLR需要收集当前调用堆栈用来构造异常信息,这个调用堆栈用于描述异常是在何处创建的,以方便我们进行问题跟踪。而性能损失的地方就在于调用堆栈的构建。就像我们打dump获取内存快照分析问题一样,CLR也需要创建一份当时的内存快照来获取堆栈信息。而创建内存快照时又会挂起进程的,这势必又会加重了性能的损耗。

所以,当你明确可能要发生的异常时,就尽量在catch之前处理。如果必须捕捉异常,也请务必捕捉具体的异常,切勿捕捉一切异常。

try
{
    //some code logic
}
catch (Exception e)//避免这样处理
{
    Logger.Log(e.Message);
    throw;
}

相关文章

  • 不可忽略的 try-catch-finally 性能问题

    是的,我曾以为try-catch-finally就类似一个if-else语句一样没有性能影响,然而实际并非如此。 ...

  • 前端性能优化

    性能是一个开发者不得忽略也不容忽略的一个问题。轻微性能问题可能只会导致微弱的延迟,给用户带来短暂的不便。 而严重的...

  • 不可忽略的汽车转向问题

    车辆在行驶时,如果方向盘稳定、不跑偏、不发抖,转弯时轻便、灵活,说明你的爱车转向性能保持的很好。 与之相反,也许你...

  • 系统优化专题2——String

    字符串性能优化 String对象是我们使用最频繁的一个对象类型,但它的性能问题却是最容易被忽略的。String对象...

  • Android性能优化:那些不可忽略的绘制优化

    前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的绘制优化,希望你们会喜欢。 目录 1...

  • Java中的try-catch-finally

    主要描述java try-catch-finally中的返回值问题。 1.try中正常执行,finally有ret...

  • 构建自动化性能测试系统的实践

    系统的性能和性能测试,是一个大家都知道其重要性却往往容易忽略的事。为什么说容易忽略呢?很多系统,做性能测试的时间要...

  • 展装业,这些问题不可忽略

    导语:互联网时代下,展装业的发展情况如何?你是否清楚?如今展装业的发展状态你是否清楚?有哪些问题需要解决,你是否清...

  • Android https忽略证书信任问题, 以及性能问题

    【第一部分,忽略证书信任问题】 直接去第二部分性能问题[#mao]搬运自:https://blog.cs...

  • iOS 性能探究

    一、什么是 App性能?性能指标是什么? 一般来讲,性能问题虽然不会导致 App不可用,但会影响用户体验,用户只关...

网友评论

    本文标题:不可忽略的 try-catch-finally 性能问题

    本文链接:https://www.haomeiwen.com/subject/pkrujqtx.html