Python 异常处理(try except)

news2024/11/14 20:40:26

文章目录

  • 1 概述
    • 1.1 异常示例
  • 2 异常处理
    • 2.1 捕获异常 try except
    • 2.2 抛出异常 raise
  • 3 异常类型
    • 3.1 内置异常
    • 3.2 自定义异常

1 概述

1.1 异常示例

  • 异常:程序执行中出现错误,若不处理,则程序终止

示例代码:

v = 6 / 0  # 除数不能为 0

print(v)

执行结果:
**在这里插入图片描述

2 异常处理

2.1 捕获异常 try except

# try:常规程序块
try:
    v = 6 / 0
    print(v)
# except: 捕获异常(捕获到就停止) 
except ZeroDivisionError:  # 测试 IOError
    print('被除数不能为 0')
except Exception as e:  # 常规异常的基类
    print(f'仅异常未被上述捕获时,执行此处,{e}')
# else:仅无异常时,执行
else:
    print('仅无异常时,执行')
# 无论是否异常,均执行
finally:
    print('无论是否异常,均执行')

2.2 抛出异常 raise

try:
    a = input("输入一个数:")
    # 判断用户输入的是否为数字
    if not a.isdigit():
        raise ValueError("a 必须是数字")
except ValueError as e:
    # 返回异常信息
    print(e)  # a 必须是数字
    # 返回对象的规范字符串表示形式
    print("引发异常:", repr(e))  # 引发异常:ValueError('a 必须是数字')

3 异常类型

3.1 内置异常

  • Python 模块内置的
内置异常描述信息
ZeroDivisionError除以零的错误
ValueError值错误,通常与数据类型转换相关
TypeError类型错误,操作不支持的数据类型
FileNotFoundError文件未找到错误
Error  # 了解即可。 输入 Error,会提示所有的标准异常

在这里插入图片描述

3.2 自定义异常

  • 需继承 Exception 类
class MyError(Exception):
    def __init__(self, code, message):
        self.code = code
        self.message = message

    def __str__(self):
        return f"{self.code}: {self.message}"


def divide(a, b):
    if b == 0:
        raise MyError(400, "除数不能为0")
    return a / b


if __name__ == '__main__':
    try:
        result = divide(6, 0)
    except MyError as e:
        print(e)  # 400: 除数不能为0

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

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

相关文章

滴水逆向三期笔记与作业——02C语言——07 多维数组

OneNote防丢 多维数组 一、二维数组的初始化1.1 二维数组初始化1.2 给定部分值1.3 二维数组省略第二层的{}1.4 省略长度1.5 多维数组寻址1.6 作业 一、二维数组的初始化 1.1 二维数组初始化 代码1 int arr[3][4] { {1,2,3,4}, {5,6,7,8}, {9,7,6,5} }; 代码2 int arr[3*4…

科普:什么是合同生命周期管理?

在当前,企业面临自身转型升级与行业数字建设的挑战,急需一种系统化的解决方案,帮助企业在自身运作方面实现降本增效,为拓展业务获得发展提供助力,而合同生命周期管理在其中就扮演着十分重要的角色。 一、合同生命周期…

超详细!Opencv人脸识别!附源码!

一、新建环境 注意!!确定后需要关闭项目,重新打开,终端的环境才会变化!! 二、下载安装包(只需要3个即可) 1. 下载dlib包 pip install dlib-19.19.0-cp38-cp38-win_amd64.whl.whl …

数据结构学习笔记——二叉树的遍历和链式存储代码实现二叉树

目录 一、二叉树的遍历(一)二叉树的先序遍历(DLR)(二)二叉树的中序遍历(LDR)(三)二叉树的后序遍历(LRD)(四)二…

修复电脑中缺失的VCRUNTIME140.dll文件的5个有效方法

vcruntime140.dll丢失5个修复方法与vcruntime140.dll是什么以及丢失对电脑的影响 引言: 在日常使用电脑的过程中,我们可能会遇到一些错误提示,其中之一就是“vcruntime140.dll丢失”。那么,什么是vcruntime140.dll?它…

虚幻学习笔记1—给UI添加动画

一、前言 本文所使用的虚幻版本为5.3.2,之前工作都是用unity,做这类效果用的最多的是一个DoTween的插件,在虚幻中都内置集成了这这种效果制作。 图1.1 UI动画 二、过程 1、首先,在诸如按钮、图像等可交互控件中选中,如…

【驱动】串口驱动分析(四)-串口编程和调试方法

串口调试 串口调试主要有 根据/proc系统信息确认串口状态,stty命令,编程调试 三种调试方法,下面我们分别具体介绍下。 根据设备节点确认串口是否正常 系统上电时,默认会使能串口,我们可以通过dmesg | grep ttyS 查看…

2023 年 IntelliJ IDEA下载、安装教程,附详细图文

大家好,今天为大家带来的是 2023年 IntelliJ IDEA 下载、安装教程,超详细的图文教程,亲测可用。 文章目录 1 IDEA 下载2 IDEA 安装3 IDEA 使用4 快捷键新手必须掌握:Ctrl:Alt:Shift:Ctrl Alt&a…

mysql:免费的GUI客户端工具推荐并介绍常用的操作

给大家推荐几个常用的 mysql 数据库客户端 sequel-pro sequel-ace 官网下载地址 免费 sequel-ace 可以理解为 Sequel Pro 的升级版,由于Sequel Pro官方不维护了,特别是对 MySQL 8.0 支持不好,所以现在由社区维护了新分支 sequel-ace&#x…

中兴亮相中国国际现代化铁路技术装备展览会 筑智铁路5G同行

近日,第十六届中国国际现代化铁路技术装备展览会在北京中国国际展览中心举办,中兴以“数智铁路,5G同行”主题亮相本次展览会,并全面展示了“数字铁路网络基础设施”、“云边结合的铁路行业云”、“数字铁路赋能赋智”等方面的最新…

[蓝桥杯习题]———位运算、判断二进制1个数

⭐Hello!这里是欧_aita的博客。 ⭐今日语录:行动胜过一切。 ⭐个人主页:欧_aita ψ(._. )>⭐个人专栏: 数据结构与算法(内含蓝桥杯习题) MySQL数据库 位运算 位运算位运算的定义简单运用 实战刷题题目思路代码实现声…

第十八章,Swing窗体

概述 String包的层次结构和继承关系如下 常用的Swing组件如下表 Swing常用窗体 JFrame 窗体 JFrame 类的常用构造方法包括以下两种形式: public JFrame():创建一个初始不可见、没有标题的窗体。 public JFrame(String title)&a…

调查问卷平台可以设置考卷吗?在线考试与问卷调查的结合

我们现在使用调查问卷不仅可以用来做数据收集,还可以用来设置考卷。 Zoho Survey也可以帮助您实现考试这一功能,具体操作如下图: 第一步:打开【Survey】,点击【创建调查】。 第二步:填写【调查名称】和【类…

中国毫米波雷达产业分析3——毫米波雷达市场分析(四、五、六)

四、康养雷达市场 (一)市场背景 1、政府出台系列政策提升智慧健康养老产品供给和应用 康养雷达是一种以老年人为主要监测对象,可以实现人体感应探测、跌倒检测报警、睡眠呼吸心率监测等重要养老监护功能的新型智慧健康养老产品。 随着我国经…

.net core 连接数据库,通过数据库生成Modell

1、安装EF Core Power Tools:打开Vs开发工具→扩展→管理扩展 2、(切记执行这步之前确保自己的代码不存在编写或者编译错误!)安装完成后在你需要创建数据库实体的项目文件夹上面单击右键,找到EF Core 工具(必须安装扩展之和才会有…

深度解析 Spring Security 自定义异常失效问题:源码剖析与解决优化

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

ACM程序设计课内实验(2) 排序问题

基础知识‘ sort函数 C中的sort函数是库中的一个函数&#xff0c;用于对容器中的元素进行排序。它的原型如下&#xff1a; template <class RandomAccessIterator, class Compare> void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);参数…

JAVA基础进阶(三)

一、权限修饰符的访问权限 需要特别注意的是: 被private修饰的成员变量以及成员方法只能在本类中进行调用&#xff0c;所以在其他类中创建本类对象,无法直接访问私有成员变量和成员方法,只能通过set、get方法间接访问。被public修饰的成员变量以及成员方法可以在任意地方被调用…

Linux C/C++高级全栈开发(后端/游戏/嵌入式/高性能网络/存储/基础架构)

Linux C/C高级全栈开发是一个涉及到多个领域的综合性技术要求&#xff0c;需要对Linux系统、C/C编程语言以及各种相关的技术进行深入的理解和应用。 下面是一些涵盖的主要技术领域和技能要点&#xff1a; Linux系统基础&#xff1a;熟悉Linux操作系统的原理和常用命令&#xf…

恒驰服务 | 华为云云上运维服务offering

恒驰运维服务主要针对运维要求高或自身运维能力有限的客户&#xff0c;通过服务增购的形式&#xff0c;提供运维服务以协助客户做好云上资源运维管理&#xff0c;规避业务风险&#xff0c;降低运维开销&#xff0c;提升客户业务稳定性。 适用场景&#xff1a; 如何保障业务稳定…