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

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

很明显,0不能做除数,这里的ZeroDivisionError是一个异常对象。Python在遇到这种情况时,将停止运行,而我们可以根据这些信息对程序修改。下面我们告诉Python发生这种错误的时候怎么办,如果再次发生这样的错误,那么就有备无患了。

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

运行结果如下:

you can't divide by  zero! 

使用异常避免崩溃
下面来创建一个只执行除法运算的简单计算器:

print("give me two numbers,and i'will 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
    answer = int(first_number) / int(second_number)
    print(answer)

这个程序没有采取任何处理错误的措施,因此让它执行除数为0的除法运算时,它将崩溃。

enter ‘q’ to quit.

First number:2
Second number:0
Traceback (most recent call last):
  File "D:/pythonProject/橙子1.py", line 11, in <module>
    answer = int(first_number) / int(second_number)
ZeroDivisionError: division by zero

程序崩溃可能会泄露信息,让那些怀有恶意的用户通过traceback获悉你不希望他知道的信息。而通过将可能的错误放在try-except代码块中,可以提高这个程序抵御错误的能力。
`

print("give me two numbers,and i'will 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:
        answer = int(first_number) / int(second_number)
    except ZeroDivisionError:
        print("you can't divide by 0 !")
    else:
        print(answer)

可以看到


give me two numbers,and i'will divide them.
enter ‘q’ to quit.

First number:2
Second number:0
you can't divide by 0 !

可以说,except代码块告诉Python,如果它尝试运行try代码块中的代码时引发了异常,该怎么办。

本文地址:https://blog.csdn.net/qq_52006804/article/details/110878139