一、什么是异常、为什么要处理异常
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':
break
second_num=input("please input second num:")
if second_num=='q':
break
answer = 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':
break
second_num=input("please input second num:")
if second_num=='q':
break
try:
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':
break
second_num=input("please input second num:")
if second_num=='q':
break
try:
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
语句,这样就能解决异常引起程序崩溃的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/73702.html