异常处理-python进阶篇十一

  Python使用被称为异常 的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。

  异常是使用try-except 代码块处理的。try-except代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。使用了try-except代码块时,即便出现异常,程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的traceback

print(5/0)

Traceback (most recent call last):
    File "division.py", line 1, in <module>
        print(5/0)
ZeroDivisionError: division by zero

  1、使用try-except 代码块

try:
    print(5/0)
except ZeroDivisionError:
    print("You can‘t divide by zero!")

  2、使用try-except-else代码块

  通过将可能引发错误的代码放在try-except 代码块中,可提高这个程序抵御错误的能力。错误是执行除法运算的代码行导致的,因此我们需要将它放到try-except 代码块中。这个示例还包含一个else 代码块;依赖于try 代码块成功执行的代码都应放到else 代码块中:

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: ")
    try: #尝试执行try 代码块中的除法运算
        answer = int(first_number) / int(second_number)
    except ZeroDivisionError: #except 代码块告诉Python,出现ZeroDivisionError 异常时该怎么办
        print("You can‘t divide by 0!")
    else:
        print(answer)
‘‘‘
Give me two numbers, and I‘ll divide them.
Enter ‘q‘ to quit.
First number: 5
Second number: 0
You can‘t divide by 0!
First number: 5
Second number: 2
2.5
First number: q
‘‘‘

   3、处理FileNotFoundError 异常

  使用文件时,一种常见的问题是找不到文件:你要查找的文件可能在其他地方、文件名可能不正确或者这个文件根本就不存在。

filename = alice.txt
try:
    with open(filename) as f_obj:
        contents = f_obj.read()
except FileNotFoundError:
    msg = "Sorry, the file " + filename + " does not exist."
    print(msg)

异常处理-python进阶篇十一

上一篇:并发编程01_创建多线程详解


下一篇:python,pickle,serialize