当程序中出现异常情况时,将发生异常。例如,如果您要读取文件而该文件不存在怎么办?或者,如果您在程序运行时意外删除了该怎么办?此类情况使用异常处理。 同样,如果您的程序有一些无效的语句怎么办?这是由Python处理的,Python举起了手,告诉您有错误。 失误考虑一个简单的print 函数调用。如果我们拼错print 了Print 怎么办?请注意大写。在这种情况下,Python会引发语法错误。 >>> Print("Hello World")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Print' is not defined
>>> print("Hello World")
Hello World
观察到aNameError 升高,并且打印出检测到错误的位置。这就是此错误的错误处理程序的作用。 例外情况我们将尝试读取用户的输入。输入下面的第一行,然后Enter 按键。当您的计算机提示您输入时,请[ctrl-d] 在Mac上或[ctrl-z] 在Windows上按,看看会发生什么。(如果您使用的是Windows,但两个选项都不起作用,则可以尝试[ctrl-c] 在命令提示符下生成KeyboardInterrupt错误)。 >>> s = input('Enter something --> ')
Enter something --> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
EOFError
Python引发了一个名为的错误EOFError ,这基本上意味着它在没想到它会发现文件符号结尾(由表示ctrl-d )。 处理异常我们可以使用该try..except 语句处理异常。基本上,我们将常规语句放入try块中,并将所有错误处理程序置于except块中。 示例(另存为exceptions_handle.py ): try:
text = input('Enter something --> ')
except EOFError:
print('Why did you do an EOF on me?')
except KeyboardInterrupt:
print('You cancelled the operation.')
else:
print('You entered {}'.format(text))
输出: # Press ctrl + d
$ python exceptions_handle.py
Enter something --> Why did you do an EOF on me?
# Press ctrl + c
$ python exceptions_handle.py
Enter something --> ^CYou cancelled the operation.
$ python exceptions_handle.py
Enter something --> No exceptions
You entered No exceptions
这个怎么运作 我们将所有可能引发异常/错误的语句放入try 块中,然后将适当错误/异常的处理程序放入except 子句/块中。该except 子句可以处理单个指定的错误或异常,或者带括号的错误/异常列表。如果未提供错误或异常的名称,它将处理所有错误和异常。 注意,except 每个try 子句必须至少有一个子句与之关联。否则,使用try块有什么意义? 如果未处理任何错误或异常,则将调用默认的Python处理程序,该处理程序将停止执行程序并显示错误消息。我们已经在上面的操作中看到了这一点。 您还可以使else 子句与try..except 块关联。else 如果没有异常发生,则执行该子句。 在下一个示例中,我们还将看到如何获取异常对象,以便我们可以检索其他信息。 |