我来自 Java,其中 Exceptions 和 Errors 是完全不同的东西,它们都源自称为 Throwable
的东西。
在 Java 中,您通常不应该 try catch 错误。
在 Python 中,虽然区别似乎很模糊。
到目前为止,在阅读了一些文档并检查了 the hierarchy 之后,我有以下问题:
那么哪些是 系统退出 异常,哪些不是?目前还不清楚。所有用户定义的异常也应该从 Exception 派生。所以基本上作为初学者,除了 Exception 之外,我还需要担心其他任何事情吗?好像没有。
最佳答案
SyntaxError
/eval
)之外, exec
是不可捕获的,因为它发生在代码实际运行之前。 os._exit
可以强行杀死进程,但它是通过绕过异常机制来实现的。 BaseException
,但不是 Exception
。但是它们可以像任何其他异常 Exception
派生意味着它们不在“系统退出”类别中 AssertionError
只是另一个 Exception
子类,所以它不是“系统退出”。它只是与具有特殊语义的 assert
语句相关联。 BaseException
但不是 Exception
的东西(例如 SystemExit
、 KeyboardInterrupt
)是“不合理的捕捉”(或者如果你确实捕捉到它们,它应该几乎总是清理并重新记录/抛出它们的所有其他内容(677914)4)以及)是“有条件地捕捉”。没有其他区别。 需要明确的是,“退出系统”只是表示“
Exception
不会捕捉到的东西”的一种方式;如果不涉及 except Exception:
块,则所有异常(除了警告,如上所述,根据警告过滤器的行为不同)都是“系统退出”。
关于python - Python 中的异常与错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60708789/