Python编程中的异常处理

什么是异常? 

程序错误(errors)有时也被称为程序异常(exceptions),这是每个编程人员都会经常遇到的问题。在过去,当遇到这类情况时,程序会终止执行并显示错误信息,通常是以Traceback的形式展示详细的异常报告。然而,Python提供了一项强大的功能,允许我们捕捉这些异常并编写相应的异常处理程序。当异常被捕捉时,会执行相应的异常处理程序,从而使程序能够继续执行,而不是立即终止。这样的机制极大地增强了程序的健壮性和容错能力。

示例:

Python提供了多种内置的异常类型

在Python中,异常是程序运行时发生的错误情况。Python提供了多种内置的异常类型,用于处理不同的错误场景。以下是一些常见的Python异常种类:

  1. AttributeError:当访问的对象属性不存在或者不支持赋值时触发。
  2. AssertionError:当assert断言条件为假时抛出。
  3. ImportError:导入模块或包时出错,通常是由于路径问题或名称错误。
  4. IndexError:当访问序列(如列表、元组或字符串)时,下标索引超出其范围。
  5. KeyError:在字典中查找一个不存在的键时触发。
  6. NameError:尝试访问一个未定义的变量时抛出。
  7. OSError:操作系统产生的异常,如文件操作错误。
  8. SyntaxError:当代码中存在语法错误时抛出。
  9. TypeError:在运算或函数调用中,使用了不兼容的类型时触发。例如,尝试将整数和字符串相加。
  10. ValueError:当函数或操作的参数具有正确的类型但不合法时引发。例如,尝试将非数字字符串转换为整数。
  11. ZeroDivisionError:进行数学运算时除数为0时触发。

当这些异常发生时,Python会中断当前的执行流程,并跳转到异常处理代码(如果有的话)。如果没有适当的异常处理代码,程序将终止并显示错误信息。通过编写tryexcept块,可以捕获这些异常并定义自定义的异常处理逻辑,从而使程序更加健壮和容错。

捕获异常try-except

基本捕获异常方法

try :
指令               #预先设想可能引发错误异常的指令
except  异常对象: 
异常处理程序        #通常是指出异常原因,方便修正

实例代码:

def div(x,y):
    try:
        return x / y
    except ZeroDivisionError :
        print("除数不可为0")

print(div(5,0))
print(div(2,2))

代码解释: 

当try块中的代码引发异常时,控制流会立即转移到与之匹配的except块。在这个例子中,except ZeroDivisionError块会捕获ZeroDivisionError异常,并执行块内的代码,即打印出“除数不可为0”。

当您调用print(div(5,0))时,由于除数为0,会引发ZeroDivisionError异常,因此会执行except块中的代码,打印出“除数不可为0”,并且函数返回None(因为没有return语句在except块中)。所以,第一个print语句的输出是“除数不可为0”,而div(5,0)的返回值是None。

当您调用print(div(2,2))时,由于除数不为0,try块中的代码可以成功执行,返回商1.0。因此,第二个print语句的输出是1.0。

如果想要消除“None”,可用return,看下面这个例子:

def div(x,y):
    try:
        return x / y
    except ZeroDivisionError :
        return("除数不可为0")

print(div(5,0))
print(div(2,2))

输出结果:

D:\anaconda2019\python.exe D:/pyprogect/异常处理/test1.py
除数不可为0
1.0

Process finished with exit code 0


捕获多种异常

示例代码:

def div(x,y):
    try:
        return x / y
    except (NameError,ZeroDivisionError) as err :
        return("捕获到命名异常 或者 除0异常")

print(div(5,0))

输出结果:

D:\anaconda2019\python.exe D:/pyprogect/异常处理/test1.py
捕获到命名异常 或者 除0异常

捕获所有异常

try-except可以获取全部的异常 

def div(x,y):
    try:
        return x / y
    except :
        print("出现了某种异常。")

print(div(5,0))

或者使用Exception

def div(x,y):
    try:
        return x / y
    except Exception as e :
        print("出现了某种异常。")

print(div(5,0))

异常的else

def div(x,y):
    try:
         print(x / y)
    except Exception as e :
        print("出现了某种异常。")
    else:
        print("没有出现异常。")


div(5,5)

 结果输出:

D:\anaconda2019\python.exe D:/pyprogect/异常处理/test1.py
1.0
没有出现异常。

Process finished with exit code 0

异常中的Finally

finally表示的是无论是否异常都要执行的代码。

try:
    print(5 / 2)
except Exception as e :
    print("出现了某种异常。")
else:
    print("该程序中没有出现异常。")
finally:
    print("《程序结束》")

输出结果:

D:\anaconda2019\python.exe D:/pyprogect/异常处理/test1.py
2.5
该程序中没有出现异常。
《程序结束》

Process finished with exit code 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/392826.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day-02-02

Httpclient测试 安装HTTP Client插件 使用IDEA自带的http接口测试工具——HTTP Client Open in HTTP Client 生成测试用例 点击绿色箭头可以运行测试用例,控制台会输出结果。 保存和修改测试用例 在模块下新建一个api-test包用来存放测试用例,将生…

SQL Extractor 数据库修复取证大师-数据库修复专家

SQL Extractor 数据库修复取证大师介绍 SQL Extractor 数据库修复取证大师 功能介绍:SQL Extractor数据库修复取证大师最新版本10.94软件特色:针对勒索病毒加密的SQL 数据库有特殊的修复算法,可匹配用友,金蝶数据库结构关系. 支持7.0、SQL2000、SQL2005、SQL2008、…

GPT-SoVITS-WebUI 克隆声音 macos搭建

强大的少样本语音转换与语音合成Web用户界面 macos运行参考 macos conda create -n GPTSoVits python3.9 conda activate GPTSoVits激活环境 conda activate GPTSoVits停用 conda deactivate mkdir GPTSoVits cd GPTSoVits git clone https://github.com/RVC-Boss/GPT-SoVITS…

这才是大学生该做的副业,别再痴迷于游戏了!

感谢大家一直以来的支持和关注,尤其是在我的上一个公众号被关闭后,仍然选择跟随我的老粉丝们,你们的支持是我继续前行的动力。为了回馈大家长期以来的陪伴,我决定分享一些实用的干货,这些都是我亲身实践并且取得成功的…

java生态环境评价Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 生态环境评价管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…

【GPT-2】论文解读:Language Models are Unsupervised Multitask Learners

文章目录 介绍zero-shot learning 零样本学习 方法数据Input Representation 结果 论文:Language Models are Unsupervised Multitask Learners 作者:Alec Radford, Jeff Wu, Rewon Child, D. Luan, Dario Amodei, I. Sutskever 时间:2019 介…

数智化转型|两大电网、五大发电2024年重点工作路线图!

2024年1月,两大电网、五大发电集团陆续召开2024年工作会议,明确了2024年工作目标及重点路线图。从工作会议内容来看,不难发现,加快推动数智化转型,建设新型电力系统成为几大集团未来共同发展目标。会议内容如下&#x…

111期_C++_2024年1月份作业博客_选择题错题总结

一、野指针问题:在定义的时候没有初始化,就不能能用scanf 或 printf 二、一个变量出现在表达式的两边作为两个不同的操作数, 并且其中一个操作数带有,此时表达式出现歧义 三、两端出栈问题: 错因:未理解题…

【感知机】感知机(perceptron)学习算法的收敛性

感知机( perceptron )是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取1 和-1二值。感知机对应输入空间(特征空间)中将实例划分为正负两类的分离超平面,是一种判别模型。感知机是神经网络与支持向量机的基础…

如何理解DFMEA的输入与输出——SunFMEA软件

设计FMEA(DFMEA)是一种用于评估设计阶段产品潜在失效的风险的工具。它通过对设计要素的逐一分析,识别出可能导致产品失效的因素,为设计团队提供改进和优化的依据。本文SunFMEA软件将详细介绍设计FMEA的输入与输出,帮助…

PyCharm - Run Debug 程序安全执行步骤

PyCharm - Run & Debug 程序安全执行步骤 1. Run2. DebugReferences 1. Run right click -> Run ‘simulation_data_gene…’ or Ctrl Shift F10 2. Debug right click -> Debug ‘simulation_data_gene…’ 在一个 PyCharm 工程下,存在多个 Pytho…

Java 抽象容器类源码剖析

总体介绍 抽象容器类接口和具体容器类的关系如图所示,顶层包括Collection、List、Set、Queue、Deque和Map6个抽象容器类。 AbstractCollection:实现了Collection接口,被抽象类AbstractList、AbstractSet、AbstractQueue继承,Arra…

Vue+SpringBoot打造电子元器件管理系统

目录 一、摘要1.1 项目简介1.2 项目录屏 二、研究内容三、界面展示3.1 登录&注册&主页3.2 元器件单位模块3.3 元器件仓库模块3.4 元器件供应商模块3.5 元器件品类模块3.6 元器件明细模块3.7 元器件类型模块3.8 元器件采购模块3.9 元器件领用模块3.10 系统基础模块 四、…

通过Linux终端搭建基于HTTP隧道的文件传输系统

嘿,Linux小侠们,准备好挑战一项酷炫的任务了吗?今天我们要一起通过Linux终端搭建一个基于HTTP隧道的文件传输系统,让我们的文件在网络的海洋中畅游无阻! 在开始之前,让我们先来想象一下这个场景&#xff1…

数字化转型导师坚鹏:政府数字化思维创新之道

政府数字化思维创新之道 ——政府数字化转型必须具备的6大数字化思维 课程背景: 很多政府存在以下问题: 不知道数字化转型如何改变思维模式? 不清楚需要建立什么样的数字化思维? 不知道如何开展数字化思维创新工作&#…

c++开发基础之保障多线程编程中的原子操作InterlockedIncrement和InterlockedDecrement用法详解

一、介绍 在多线程编程中,确保对共享变量进行原子操作是至关重要的。当多个线程同时访问和修改同一共享资源时,如果没有合适的同步机制,可能会导致数据竞争、内存一致性问题,甚至造成程序崩溃。为了解决这个问题,C提供…

数据分析(一) 理解数据

1. 描述性统计(summary) 对于一个新数据集,首先通过观察来熟悉它,可以打印数据相关信息来大致观察数据的常规特点,比如数据规模(行数列数)、数据类型、类别数量(变量数目、取值范围…

【STM32 物联网】基础AT指令与基础Wifi功能AT指令

文章目录 前言一、基础AT指令1.1 测试AT启动1.2 重启模块1.3 查看版本信息1.4 进入深度睡眠模式1.5 开关回显1.6 恢复出场设置1.7 UART配置设置临时设置,不保存到Flash设置串口保存到Flash 1.8 设置sleep模式查询当前sleep模式设置当前sleep模式 二、基础Wifi功能AT…

Mac录屏保存在哪?让你快速找到它们!

在日常生活和工作中,我们经常需要录制电脑屏幕,以便进行演示、教学或者保存重要信息。然而,对于许多苹果用户来说,他们可能并不清楚mac录屏文件在哪。在本文中,我们将详细介绍如何在mac上进行录屏,以及录屏…

网络原理(IP篇)

IP IPv4(Internet Protocol)数据报首部格式版本首部长度可变部分区分服务总长度标识、标志、片偏移生存时间协议首部检验和源IP地址和目的IP地址 NAT 机制(**N**etwork **A**ddress **T**ranslator)网络地址转换NAT将数据的转发由…