Python 异常
2018-01-26 本文已影响11人
赵者也
- 使用 try-except 代码块
当你认为可能发生了错误时,可编写一个 try-except 代码块来处理可能引发的异常。你让 Python 尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么办。
处理 ZeroDivisionError 异常的 try-except 代码块类似于下面这样:
try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero!")
- try-except-else 代码块
其工作原理大致如下:Python 尝试执行 try 代码块中的代码;只有可能引发异常的代码才需要放在 try 语句中。有时候,有一些仅在 try 代码块成功执行时才需要运行的代码;这些代码应放在 else 代码块中。except 代码块告诉 Python,如果它尝试运行 try 代码块中的代码时引发了指定的异常,该怎么办。
print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while True:
first_number = input("\nFirst number: ")
if first_number == 'q':
break
second_number = input("Second number: ")
if second_number == 'q':
break
try:
answer = int(first_number) / int(second_number)
except ZeroDivisionError:
print("You can't divide by 0!")
else:
print(answer)
- 出错时,什么都不做
Python 有一个 pass 语句,可在代码块中使用它来让 Python 什么都不要做:
print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while True:
first_number = input("\nFirst number: ")
if first_number == 'q':
break
second_number = input("Second number: ")
if second_number == 'q':
break
try:
answer = int(first_number) / int(second_number)
except ZeroDivisionError:
pass
else:
print(answer)
- 决定报告哪些错误
在什么情况下该向用户报告错误?在什么情况下又应该在失败时一声不吭呢?如果用户知道要分析哪些文件,他们可能希望在有文件没有分析时出现一条消息,将其中的原因告诉他们。如果用户只想看到结果,而并不知道要分析哪些文件,可能就无需在有些文件不存在时告知他们。向用户显示他不想看到的信息可能会降低程序的可用性。 Python 的错误处理结构让你能够细致地控制与用户分享错误信息的程度,要分享多少信息由你决定。
本文参考自 《Python 编程:从入门到实践》