小白教程

 找回密码
 立即注册

异常情况

发布者: 小白教程

程序中出现异常情况时,将发生异常例如,如果您要读取文件而该文件不存在怎么办?或者,如果您在程序运行时意外删除了该怎么办?此类情况使用异常处理

同样,如果您的程序有一些无效的语句怎么办?这是由Python处理的,Python举起了手,告诉您有错误

失误

考虑一个简单的print函数调用。如果我们拼错printPrint怎么办?请注意大写。在这种情况下,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如果没有异常发生,则执行子句。

在下一个示例中,我们还将看到如何获取异常对象,以便我们可以检索其他信息。

上一篇:pickle 模块下一篇:引发异常

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-9-20 01:49 , Processed in 0.018246 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

返回顶部