信号(signal)和异常(exception)存在哪些异同?
异常 哪些 存在 信号 Exception 异同 signal
2023-09-11 14:18:43 时间
作者:匿名用户
链接:https://www.zhihu.com/question/20175801/answer/14225549
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/20175801/answer/14225549
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
既然提问者已经补充了一些信息,那么我的定义和理解是以下这些:
那么两者的区别已经很明显了:
除非环境明确要求,一般的程序流程控制只涉及后者;如果环境支持,可能会将 OS 发出的信号包装成对应的异常交给应用处理。
- 信号 / signal:软件中断,特指由操作系统发出给应用的异步提示机制,如 Unix signal 。除零错误等 CPU 信号最终仍然被表现为 SIGFPE 信号,否则不在此讨论(如 IRQ 中断等)
- 异常:按照提问者的补充,为编程语言或环境提供的、同步的错误提示方法,如 C++ / Java 中 throw 的、Python 中 raise 出的对象
那么两者的区别已经很明显了:
- 信号由操作系统发出,更为底层,与程序的执行是异步的,由特殊的处理函数进行异步处理(signal / signaction),与程序语言之间几乎没有集成,处理难度更大。
- (编程语言)异常则由程序语言和运行时提供,是一种可控的、同步激发处理、被语言和运行时支持的、可进行结构化处理的流程控制机制(与 return 和 if else for while 等没有本质区别)。
除非环境明确要求,一般的程序流程控制只涉及后者;如果环境支持,可能会将 OS 发出的信号包装成对应的异常交给应用处理。
https://www.zhihu.com/question/20175801
相关文章
- 异常的中英文对照
- Reactor详解之:异常处理
- springMVC的全局异常设置
- 测试老鸟总结,性能测试如何做?常见异常有哪些?解决方法...
- 异常处理
- 第34节:Java当中的异常
- @ControllerAdvice与@ControllerAdvice统一处理异常
- chrome 浏览器的预提取资源机制导致的一个请求发送两次的问题以及ClientAbortException异常
- java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法
- 全局异常信息 ex=您的主机中的软件中止了一个已建立的连接
- impala-shell导出数据存在中文异常问题
- Java | 异常类【万字详解,看过来】
- Junit测试预期异常
- IOS开发的哪些异常之异常断点
- 关于Cocos的内存管理机制引发一些异常的解决方案
- 使用Rabbitmq.client反序列化包含Mongo.Bson.ObjectId属性实体类时抛异常
- BigDecimal相除异常
- WCF系列教程之WCF客户端异常处理