python异常是不是会生成软件陷阱/中断?
Posted
技术标签:
【中文标题】python异常是不是会生成软件陷阱/中断?【英文标题】:Does a python exception generate a software trap/interrupt?python异常是否会生成软件陷阱/中断? 【发布时间】:2021-11-19 05:05:21 【问题描述】:假设我在中断器中抛出了一些简单的错误,例如:
>>> x = 5/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
这会在内核级别产生陷阱还是导致上下文切换? 还是只是在 Python 运行时内部处理而没有真正影响性能?
如果我将代码包装在 Python 异常块中,这种情况是否会发生变化?
>>> try:
... x = 5/0
... except :
... pass
...
>>>
【问题讨论】:
@sj95126 您说的是标准实现“CPython”,还是适用于所有实现? 没关系 - 我觉得我的解释不够透彻,我已经删除了我的答案。 【参考方案1】:简而言之:不,异常不算作软件中断,也不算作软件中断/陷阱。
中断主要是针对操作系统的东西,而python中的错误实际上只是来自sys.stderr
,你也可以编写它们:
import sys
sys.stderr.write('I am an error!')
输出:
I am an error!
错误来自sys.stderr
,它们只是颜色不同,表现为错误。错误也只能由解释器在执行时检测到。
这意味着错误不是你想象的那样,它们实际上只是来自sys.stderr
。
【讨论】:
以上是关于python异常是不是会生成软件陷阱/中断?的主要内容,如果未能解决你的问题,请参考以下文章