我们在Python中是否有检查和未检查异常的概念?

2024-05-07 16:44:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我的一个在JAVA上工作的朋友问我如何处理Python中的已检查和未检查异常。我以前没听说过这些术语,所以我在谷歌上搜索了一下,找出什么是检查和未检查异常。我在Python中没有发现任何与此类异常相关的内容

Do we have a concept of checked and unchecked exceptions in Python? If no, then by default all the exceptions are checked or unchecked?

提前谢谢你


Tags: andofin内容have朋友javado
2条回答

Java有检查和未检查的异常,因为Java是一种编译的编程语言,检查的异常出现在编译中。在python中,没有这样的例外,因为python是一种解释语言

检查异常在Python中是不存在的。但是Python在异常类层次结构中确实有一些相似之处。以下是Java结构:

source

在Java中,如果方法将抛出Exception或任何继承自Exception的类,而不是RuntimeException,则必须在方法签名中声明。此规则称为已检查异常。。它迫使用户考虑它们或应用程序将不编译。

在Python中,我们仍然有一个类似的概念,但没有强制执行。您可能听说过,使用bare-except语句是不好的风格,至少您应该选择捕获Exception

try:
   foo()
except: # bad!
   bar()

try:
   foo()
except Exception: # somewhat better!
   bar()

这是因为在Python中ExceptionBaseException扩展而来,而一个裸的except将捕获所有内容。例如,您可能不想捕获引起KeyboardInterruptctrl+c。如果你做一个空的except:,那么KeyboardInterrupt会被捕获,但是如果你做一个except Exception:,你会让这个气泡冒出来并停止应用程序。这是因为KeyboardInterrupt扩展了BaseException而不是Exception,因此不会被捕获

相关问题 更多 >