zoukankan      html  css  js  c++  java
  • 信号(signal)和异常(exception)存在哪些异同?

    作者:匿名用户
    链接:https://www.zhihu.com/question/20175801/answer/14225549
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    既然提问者已经补充了一些信息,那么我的定义和理解是以下这些:
    • 信号 / signal:软件中断,特指由操作系统发出给应用的异步提示机制,如 Unix signal 。除零错误等 CPU 信号最终仍然被表现为 SIGFPE 信号,否则不在此讨论(如 IRQ 中断等)
    • 异常:按照提问者的补充,为编程语言或环境提供的、同步的错误提示方法,如 C++ / Java 中 throw 的、Python 中 raise 出的对象
    Windows 的 SEH(Structured Exception Handling,.aspx)同时包含了以上两种情况,不讨论。
    那么两者的区别已经很明显了:
    • 信号由操作系统发出,更为底层,与程序的执行是异步的,由特殊的处理函数进行异步处理(signal / signaction),与程序语言之间几乎没有集成,处理难度更大。
    • (编程语言)异常则由程序语言和运行时提供,是一种可控的、同步激发处理、被语言和运行时支持的、可进行结构化处理的流程控制机制(与 return 和 if else for while 等没有本质区别)。
    总的来说,后者处理过程由于是语言直接支持的,难度较小,资源管理较容易,是一种比较「高级」的机制。后者是可以基于前者实现(也可以完全无关)。
    除非环境明确要求,一般的程序流程控制只涉及后者;如果环境支持,可能会将 OS 发出的信号包装成对应的异常交给应用处理。
     
    https://www.zhihu.com/question/20175801
  • 相关阅读:
    React+AntdUi实现《好客租房系统》首页01
    javaScript学习day04——关于函数
    javaScript学习day03
    javascript学习day01
    第五章回溯法
    第四章作业
    第四章上机实践报告
    算法第三章动态规划
    PTA 7-3 编辑距离问题 (30 分)
    7-3 两个有序序列的中位数 (20 分) log n的解法
  • 原文地址:https://www.cnblogs.com/feng9exe/p/12525227.html
Copyright © 2011-2022 走看看