Python处理异常的方法:ZeroDivisionError、ValueError、FileNotFoundError异常

导读:本篇文章讲解 Python处理异常的方法:ZeroDivisionError、ValueError、FileNotFoundError异常,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、什么是异常、为什么要处理异常
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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!