"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > When Should Exceptions Be Reserved for Exceptional Circumstances?

When Should Exceptions Be Reserved for Exceptional Circumstances?

Published on 2024-11-19
Browse:216

When Should Exceptions Be Reserved for Exceptional Circumstances?

Exceptions: Reserved for Exceptional Circumstances

Despite their prevalence, the conservative use of exceptions is often advocated. Delving into the reasons behind this philosophy reveals a myriad of considerations.

Semantic Abuse

Exceptions, designed for truly exceptional situations, are often misused as control flow mechanisms. This undermines their intended semantic function, as exceptions are not expected to be raised in response to foreseeable events like incorrect user input.

The Burden of Exception Handling

Exceptions disrupt the normal flow of execution, requiring the runtime to unwind the stack and gather information for the exception object. This process incurs significant overhead, especially if exceptions are thrown frequently or handled poorly.

Resource Leaks and Unpredictable States

Unanticipated exceptions can leave resources (such as file handles or database connections) in an inconsistent state or unfreed. This can compromise system integrity and introduce security vulnerabilities.

Cognitive Complexity

滥用 exceptions 会增加程序的认知复杂度。开发人员需要考虑潜在的例外情况并编写处理代码,这会使代码难以理解和维护。

Convention and Performance

在一些情况下,使用例外确实可以简化代码结构,但这种情况下非常罕见。过于频繁地抛出例外会降低程序性能,因此应将其保留用于真正罕见的和 不可预测的情况。

何时有例外

基于这些考虑,只有在极少数情况下才适合使用例外:

  • 真正罕见的事件:例如,磁盘空间不足或外部服务中断。
  • 难以用返回代码或状态值表达的异常:在这种情况下,异常可以清晰地传达错误。
  • 需要从多个调用点处理的错误:在这些情况下,异常可以让错误在堆栈中传播。

在其他所有情况下,开发者应寻求替代解决方案,例如使用错误代码、事件或回调,以避免滥用 exceptions。

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3