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

本文主要是介绍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异常的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/314277

相关文章

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py