我们为什么使用';通过';在python的错误处理中?
在python中使用我们为什么使用';通过';在python的错误处理中?,python,Python,在python中使用pass语句是一种惯例,如下代码所示 try: os.makedirs(dir) except OSError: pass 所以,“通行证”基本上在这里什么都不做。在这种情况下,我们为什么还要在程序中放一些这样的代码?我很困惑。非常感谢您的时间和关注。这是为了防止您希望代码在try块中的行之后继续。如果您无法捕捉到它,它要么跳过执行,直到在其他地方捕捉到它,要么使程序完全失败 假设您正在创建一个程序,该程序尝试打印到打印机,但也打印到标准输出-如果打印机不可用,您可
pass
语句是一种惯例,如下代码所示
try:
os.makedirs(dir)
except OSError:
pass
所以,“通行证”基本上在这里什么都不做。在这种情况下,我们为什么还要在程序中放一些这样的代码?我很困惑。非常感谢您的时间和关注。这是为了防止您希望代码在
try
块中的行之后继续。如果您无法捕捉到它,它要么跳过执行,直到在其他地方捕捉到它,要么使程序完全失败
假设您正在创建一个程序,该程序尝试打印到打印机,但也打印到标准输出-如果打印机不可用,您可能不希望将其归档:
try:
print_to_printer('hello world')
except NoPrinterError:
pass # no printer - that's fine
print("hello world")
如果不使用try-catch,则错误将停止执行,直到捕获到异常(或使程序失败),并且不会将任何内容打印到标准输出。这是为解析器准备的。如果你写了这个:
try:
# Code
except Error:
然后在除此之外的位置不放置任何内容,解析器将发出错误信号,因为它将错误地标识下一个缩进级别。想象一下这个代码:
def f(x):
try:
# Something
except Error:
def g(x):
# More code
解析器希望语句的缩进比except语句大,但得到了一个新的顶级定义
pass
只是满足解析器的填充。pass用于告诉程序在捕获错误时应该做什么。在这种情况下,你几乎忽略了它。因此,您正在运行脚本,如果遇到错误,请继续运行,而不必担心原因和方式
这个特殊的情况是当你确定你所期望的是什么的时候。在其他情况下,您可以中断
并结束程序,甚至可以将错误分配给变量,以便可以使用调试程序,但错误为e的情况除外
try:
os.makedirs(dir)
except OSError:
break
或:
pass有两种用法。首先,也是最重要的用途:-如果try
下的代码出现异常,则执行将跳转到块之外的。如果块中除了
之外没有任何内容,它将首先抛出IndentationError
。因此,为了避免此错误,即使在出现异常时无需执行任何操作,也需要将pass
放入except
块中
第二种用法是,如果在try-except块之后有更多的代码段(例如,再次出现一些代码
和很少的代码
),并且没有将pass放入except中,那么该代码段将不会被执行(实际上整个代码都不会被执行,因为编译器将抛出缩进错误
)。因此,为了优雅地处理场景并告诉解释器执行except
块之后的行,我们需要将pass放在except块中,即使我们不想在异常情况下执行任何操作
因此,这里的pass
如name所示,处理except
块,然后将执行转移到except
块下的下一行。另请参见Python3.4简单答案中的新内容-它有助于可读性,还可以阻止链下游的不太具体的错误处理程序。
try:
os.makedirs(dir)
except OSError as e:
print(str(e))
try:
# Do something
except:
# again some code
# few more code