本文主要是介绍Python处理异常的方法:ZeroDivisionError、ValueError、FileNotFoundError异常,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、什么是异常、为什么要处理异常
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
二、如何处理异常
异常是使用try-except
代码块处理的。try-except
代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。使用了try-except
代码块时,即便出现异常, 程序也将继续运行。
三、处理ZeroDivisionError、ValueError异常
例:输入两个数a、b,输出a/b。
print("give me two num annd i will divide them")
print("enter 'q' to quit")
while True:first_num=input("please input first num:")if first_num == 'q':breaksecond_num=input("please input second num:")if second_num=='q':breakanswer = int(first_num) / int(second_num)print(answer)
1、当second_num输入为0时,将出现ZeroDivisionError异常:
Traceback (most recent call last):File "D:/pycharm/WorksPlace/Python:from learn to practice/file.py", line 52, in <module>answer = int(first_num) / int(second_num)
ZeroDivisionError: division by zero
使用try-except
解决该问题:
print("give me two num annd i will divide them")
print("enter 'q' to quit")
while True:first_num=input("please input first num:")if first_num == 'q':breaksecond_num=input("please input second num:")if second_num=='q':breaktry:answer=int(first_num)/int(second_num)except ZeroDivisionError: #second_num输入为0引起的异常print("You can't divide by zero! \n please input again:")else:print(answer) #输入无异常,输出answer
运行结果:在我们输入second_num为0后,程序并没有崩溃,而是按照except ZeroDivisionError
的处理方式处理,并且程序依然能够运行。
except ZeroDivisionError
处理流程:
我们将导致错误的代码行answer=int(first_num)/int(second_num)
放在了一个try
代码块中。如果try 代码块中的代码运行起来没有问题,Python将跳过except
代码块;如果try
代码块中的代码导致了 错误,Python将查找这样的except
代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。
2、当first_num没有输入时,将出现ValueErro异常:
当没有输入first_num,只输入second_num时,会出现ValueErro异常,因为代码中我们将输入的字符型数字转换成int型数字,当没有输入时,将无法进行转换,从而出现异常。
同样适用try
代码:
print("give me two num annd i will divide them")
print("enter 'q' to quit")
while True:first_num=input("please input first num:")if first_num == 'q':breaksecond_num=input("please input second num:")if second_num=='q':breaktry:answer=int(first_num)/int(second_num)except ZeroDivisionError: #second_num输入为0引起的异常print("You can't divide by zero! \n please input again:")except ValueError: #first_num没有输入引起的异常print("please input right first_num")else:print(answer) #输入无异常,输出answer
运行结果:
四、处理FileNotFoundError异常
使用文件时,一种常见的问题是找不到文件:你要查找的文件可能在其他地方、文件名可能不正确或者这个文件根本就不存在。对于所有这些情形,都可使用try-except 代码 块以直观的方式进行处理。
在下面的代码中,试图打开不存在的文件 offer.txt,那么将输出:"file is not exsit"
filename='offer.txt'
try:with open(filename) as files: # 打开文件contents = files.read() # 将文件内容储存到contents中
except FileNotFoundError: # 出现“找不到文件”异常print("file is not exist") # 提示出现异常原因
else:print(contents) # 输出文件内容
总结:
当某行代码可能出现错误时,将其放在try
语句中,并根据不同的异常使用一个或多个except
语句,这样就能解决异常引起程序崩溃的问题。
这篇关于Python处理异常的方法:ZeroDivisionError、ValueError、FileNotFoundError异常的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!