活用异常处理(try-except)

介绍

简要介绍Python的异常处理(try-except)。

基本语法

Try-except是Python中异常处理的基础。

作为例子,我们将解释执行除零时发生 ZeroDivisionError 的情况。
当除以零时,会出现以下错误。

print(1 / 0)
# ZeroDivisionError: division by zero

要捕获此异常,请编写如下。

try:print(1 / 0)
except ZeroDivisionError:print('Error')
# Error

如果 try 子句中出现异常名称的错误,except异常名称会中断 try 子句中的代码并执行 except 子句中的代码。
此外,通过使用 except 异常名称作为变量名,可以在变量中存储和使用异常对象。 异常对象存储错误消息,可以查看错误的详细信息。

try:print(1 / 0)
except ZeroDivisionError as e:print(e)print(type(e))
# division by zero
# <class 'ZeroDivisionError'>

还可以通过指定基类来捕获。 例如,ZeroDivisionError 的基类是 ArithmeticError。 该变量存储实际发生的派生类异常对象。

try:print(1 / 0)
except ArithmeticError as e:print(e)print(type(e))
# division by zero
# <class 'ZeroDivisionError'>

对多个异常进行不同的处理

如果要捕获多个异常并以不同的方式处理它们,请为每个异常设置 except 。

def divide(a, b):try:print(a / b)except ZeroDivisionError as e:print('catch ZeroDivisionError:', e)except TypeError as e:print('catch TypeError:', e)divide(1, 0)
# catch ZeroDivisionError: division by zerodivide('a', 'b')
# catch TypeError: unsupported operand type(s) for /: 'str' and 'str'

对多个异常执行相同的操作

通过在元组中指定异常名称,可以使用一个 except 子句捕获多个异常。

def divide(a, b):try:print(a / b)except (ZeroDivisionError, TypeError) as e:print(e)divide(1, 0)
# division by zerodivide('a', 'b')
# unsupported operand type(s) for /: 'str' and 'str'

捕获所有异常并执行相同的处理

如果要捕获所有异常,则无需指定异常名称即可编写。

try:print(1 / 0)
except:print('Error')
# Error

如果有多个 except 子句,则只能在最后一个 except 子句中省略异常名称。 (就像 if 语句中的 elifelse 一样)

正常结束处理:else

可以指定在 try 子句结束且 else 子句中不发生异常的情况下要执行的处理。

def divide(a, b):try:print(a / b)except ZeroDivisionError as e:print('catch ZeroDivisionError:', e)else:print('finish (no error)')divide(1, 2)
# 0.5
# finish (no error)divide(1, 0)
# catch ZeroDivisionError: division by zero

处理总是在终止时执行:finally

可以在finally子句中指定始终在最后执行的过程,无论是否发生异常。

def divide(a, b):try:print(a / b)except ZeroDivisionError as e:print('catch ZeroDivisionError:', e)finally:print('all finish')divide(1, 2)
# 0.5
# all finishdivide(1, 0)
# catch ZeroDivisionError: division by zero
# all finish

概括

  • except 异常名称:捕获特定异常
  • except 异常名称作为变量名称:将异常对象存储在变量中
  • except可以设置多个例外。
  • 如果 except 中没有指定异常名称,则捕获所有异常。
try:print(1 / 0)
except: # 如果try中出现异常print('Error')
else: # 如果try中没有出现异常print('finish (no error)')
finally: # 无论异常如何发生,始终执行print('all finish')

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝牙配对、连接和删除汇总

目的&#xff1a;处理PC连接蓝牙设备的配对、连接和删除操作&#xff0c;以及常见故障。 命令行配对蓝牙设备并连接 要求&#xff1a;配对BLUET043蓝牙&#xff0c;密码为4444&#xff0c;然后连接该蓝牙。操作步骤如下&#xff1a; Step1.下载 修复工具&#xff0c;然后安装…

利用python编写简易POC脚本

POC&#xff1a;概念证明&#xff0c;即概念验证&#xff08;英语&#xff1a;Proof of concept&#xff0c;简称POC&#xff09;是对某些想法的一个较短而不完整的实现&#xff0c;以证明其可行性&#xff0c;示范其原理&#xff0c;其目的是为了验证一些概念或理论。 声明&a…

三哥的黑科技,印度发布无线加热服装专利,冬季神器要来了

众所周知风和自由在冬天是不存在的&#xff0c;冬天只剩下冰冷的像刀子一样的风刮在你的脸上&#xff0c;哪怕穿的很厚&#xff0c;戴上全盔&#xff0c;也无法阻挡冰冷的风带走你身体温度&#xff0c;如果穿的特别多&#xff0c;骑车时候的舒适感和穿脱衣物的繁琐也是一大头疼…

【MySQL系列】Centos安装MySQL

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

vim常用键位总结

1、移动光标 按键作用h或←光标向左移动一个字符j或↓光标向下移动一个字符k或↑光标向上移动一个字符l或→光标向右移动一个字符Ctrl f或Page Down屏幕向下移动一页&#xff08;常用&#xff09;Ctrl b或Page Up屏幕向上移动一页&#xff08;常用&#xff09;Ctrl d屏幕向…

Kafka使用总结

1、Kafka是何如做到高性能的&#xff1f; a、消息批处理减少网络通信开销&#xff0c;提升系统吞吐能力&#xff08;先攒一波&#xff0c;消息以“批”为单位进行处理&#xff09; 生产端&#xff1a;无论是同步发送还是异步发送&#xff0c;Kafka都不会立即就把这条消息发送出…

【C++】算法库(复制操作、交换操作、变换操作)

C算法库 文章目录 C算法库复制操作copy , copy_ifcopy_ncopy_backward 交换操作swapswap_rangesiter_swap 变换操作transformreplacereplace_copy replace_copy_if 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操…

java--StringBuilder、StringBuffer、StringJoiner

1.StringBuilder ①StringBuilder代表可变字符串对象&#xff0c;相当于是一个容器&#xff0c;它里面装的字符串是可以改变的&#xff0c;就是用来操作字符串的。 ②好处&#xff1a;StringBuilder比String更适合做字符串的修改操作&#xff0c;效率会比更高&#xff0c;代码…

Java入门:EditPlus的安装与配置讲解

1. 前言 Java是一种面向对象的编程语言&#xff0c;广泛应用于各种平台和设备。在Java开发过程中&#xff0c;一个好的集成开发环境&#xff08;IDE&#xff09;是非常重要的。EditPlus是一款简单易用的文本编辑器&#xff0c;它提供了一些方便的功能来支持Java开发。本文将介…

【开源】基于JAVA的木马文件检测系统

项目编号&#xff1a; S 041 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S041&#xff0c;文末获取源码。} 项目编号&#xff1a;S041&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 木马分类模块2.3 木…

Leo赠书活动-13期 【以企业架构为中心的SABOE数字化转型五环法】文末送书

Leo赠书活动-13期 【以企业架构为中心的SABOE数字化转型五环法】文末送书 ✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客…

记录 | xshell输出错乱解决

输出错乱问题&#xff1a; 解决方法&#xff1a;

VS Code使用 CMake 或 Makefile管理C++多文件编译

VS Code使用 CMake 或 Makefile管理C多文件编译 一、Cmake方式1、文件结构2、构建项目 二、Makefile方式1、文件结构2、Makefile3、构建项目 三、附件示例中使用到的文件及代码 使用 CMake 或 Makefile 是更加标准和灵活的方法来管理多文件编译。以下是一个简单的示例&#xff…

80个常用shell命令及简单用法

Shell命令是Linux和Unix系统中的基础&#xff0c;用于完成各种操作&#xff0c;如文件管理、程序执行、文本处理等。下面列举一些常用的Shell命令&#xff0c;并详细解释它们的功能及应用场景&#xff1a; ls - 列出目录内容 功能&#xff1a;列出指定目录中的文件和目录。应用…

智能优化算法应用:基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于郊狼算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.郊狼算法4.实验参数设定5.算法结果6.参考文献7.MA…

Mybatis增删改查基础

MyBatis可根据查询的结果类型、查询条件的不同进行统一处理。 1 查询数据 1.1 根据查询数据条数来分析不同的情况 1.1.1 查询单条数据 可以通过实体类、list集合、map等处理查询结果。 通过实体类查询单条数据 User queryUserById(Param("id") Integer id);<…

C、C++、C#的区别概述

C、C、C#的区别概述 https://link.zhihu.com/?targethttps%3A//csharp-station.com/understanding-the-differences-between-c-c-and-c/文章翻译源于此链接 01、C语言 ​ Dennis Ritchie在1972年创造了C语言并在1978年公布。Ritchie设计C的初衷是用于开发新版本的Unix。在那之…

express框架使用

一、express介绍 express 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架&#xff0c;简单来说&#xff0c;express 是一个封装好的工具包&#xff0c;封装了很多功能&#xff0c;便于我们开发 WEB 应用&#xff08;HTTP 服务&#xff09; 二、express 使用 2.1 e…

【组合数学】递推关系

目录 1. 递推关系建立2. 常系数齐次递推关系的求解3. 常系数非齐次递推关系的求解4. 迭代法 1. 递推关系建立 给定一个数的序列 f ( 0 ) , f ( 1 ) , . . . , f ( n ) , . . . , f (0), f(1), ..., f(n ),... , f(0),f(1),...,f(n),..., 若存在整数 n 0 n_0 n0​ &#xff…