我们为什么使用';通过';在python的错误处理中?

我们为什么使用';通过';在python的错误处理中?,python,Python,在python中使用pass语句是一种惯例,如下代码所示 try: os.makedirs(dir) except OSError: pass 所以,“通行证”基本上在这里什么都不做。在这种情况下,我们为什么还要在程序中放一些这样的代码?我很困惑。非常感谢您的时间和关注。这是为了防止您希望代码在try块中的行之后继续。如果您无法捕捉到它,它要么跳过执行,直到在其他地方捕捉到它,要么使程序完全失败 假设您正在创建一个程序,该程序尝试打印到打印机,但也打印到标准输出-如果打印机不可用,您可

在python中使用
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