Python 异常捕获与处理

2023-11-09

视频版教程 Python3零基础7天入门实战视频教程

异常捕获与处理

如果出现程序异常,我们不去捕获和处理,那么程序遇到异常,就直接终止,后续的代码无法继续执行,这将是可怕的事情。

Python提供了完善的异常处理机制,可以实现捕获异常,处理异常,最终实现代码继续运行下去。从而让程序具有极好的容错性,让程序更加的健壮。

使用try…except捕获异常

基本语法:

try:

​ 可能会有异常的代码

except:

​ 出现异常的执行代码

try:
    print(2 / 0)
except:
    print("出现了异常")
print("程序继续")
捕获指定的异常
try:
    print(2 / 0)
except ZeroDivisionError as z:
    print("出现了异常")
print("程序继续")

多个except:

try:
    print(Person().sex)
except ZeroDivisionError as e:
    print("出现了除0异常")
except AttributeError as a:
    print("出现属性异常")
print("程序继续")

捕获所有异常,BaseException异常类是所有异常类的基类(老祖宗类),所有异常类都是直接或者间接继承BaseException异常类,Exception类是继承BaseException,并且有很多具体实现,大部分的异常类直接继承Exception,所以我们一般开发用Exeption。

try:
    print(2 / 0)
except Exception as e:
    print("出现了异常")
print("程序继续")
多异常捕获

假如程序块可能出现异常的种类比较多,我们可以用多异常捕获,只要出现其中一个异常,就会捕获到。

语法:

try:

​ 可能会有多种异常的代码

except (异常1,异常2…异常N):

​ 出现异常的执行代码

try:
    print(Person().sex)
except (ZeroDivisionError, AttributeError):
    print("出现了除0异常或者属性异常")
except:
    print("出现了未知异常")
print("程序继续")
else块

在Python的异常处理流程中还可添加一个else块,当 try块没有出现异常时,程序会执行else块。例如如下程序。

# 定义人类
class Person:
    # 属性 姓名
    name = None
    # 属性 年龄
    age = None


# print(Person().sex)
# print(2 / 0)
# print("程序继续")
try:
    print(2 / 0)
except:
    print("出现了异常")
print("程序继续")
finally块

在异常处理中,finally块中的代码无论是否出现异常,都会执行。

有些时候,程序在try块里打开了一些物理资源(例如数据库连接、网络连接和磁盘文件等),这些物理资源都必须被显式回收。

try:
    print(2 / 0)
except:
    print("出现了异常")
else:
    print("没有出现异常,我们做一些操作")
finally:
    print("无论是否有异常,都会执行")
print("程序继续")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 异常捕获与处理 的相关文章

随机推荐

  • 我与GPT的一次关于Orb-SLAM3源码(包括2)的深入对话

    目录 一 前言 二 关于Orb SLAM3的代码结构 三 关于system 3 1 关于摄像头初始化 3 2 关于摄像头模型化 3 2关于初始化 四 关于ORBVocabulary 五 关于优化 六 小结 一 前言 Orb SLAM2或者3
  • 【微信小程序】微信退款注意事项及退款通知信息解密

    1 商户退款单号 out refund no 必须唯一 如果不唯一微信端返回的错误提示是 支付单号校验不一致 需要注意 2 退款解密算法注意操作密钥 在此记录下解密代码 1 对加密串A做base64解码 得到加密串B 2 对商户key做md
  • 线程最大线程数什么时候会被创建

    线程最大线程数什么时候会被创建 前言 之前一直错误的以为线程池在执行过程中会先判断核心数然后在判断最大线程数最后才加入队列 完全错误 已经下已代码展示最大线程数量在什么时候才会被创建 1 首先创建一个队列长度只有10的时候 启动10个线程
  • 基于一道ctf 引发的 TP链分析

    回看 newstarctf week 3 的web题 想了想看看tp链吧 这道题是tp5 1 的版本 链比5 0的 短而且清晰 基于我这个shaluan tp不知道为什么动态调试出了问题 就只能静态分析了 首先是定入口 这里5 0和5 1的
  • 将2个链表交替合并成一个链表

    将带有头结点的2个线性单链表交替有规则的合并成为一个链表 今天做这个的时候 又犯了以前一个愚蠢的错误 对于有些代码 为了方便我就直接复制了 编译器查出来有错 我一直看不出来错误在哪里 那一块我直接就忽略了 代码不敢随便复制 我画个图我认为直
  • 考研同济六版课后必做题

    考研数学必做习题 同济6版 第1章 第1节 映射与函数 习题1 1 4 1 2 3 7 8 9 10 5 1 2 3 4 7 1 8 9 1 2 13 15 1 2 3 4 17 18 第1章 第2节 数列的极限 习题1 2 1 1 2 4
  • 【微信】微信小程序前后端数据请求示例

    本篇内容简介之 微信小程序的前后端数据交互示例 主要涉及到获取服务端的数据 和提交到服务端的数据演示 服务端使用java springboot进行快速搭建演示 1 在小程序中的index wxml中进行一个表单的设计 例如 说明一下wxml
  • CMake中set_target_properties/get_target_property的使用

    CMake中的set target properties命令用于为targets设置属性 targets can have properties that affect how they are built 其格式如下 set target
  • 推荐

    1 搭建你自己的神经网络 Make Your Own Neural Network 价格 45 美元 一步步让你了解神经网络的数学原理并用 Python 搭建自己的神经网络 神经网络是深度学习和人工智能的关键元素 然而 几乎很少有人真正了解
  • DITA Topic常用开发

    DITA Topic常用开发 Concept Topic用于描述类 Task Topic用于过程类 步骤类 Reference Topic用于过 DITA Topic开发特殊 应急维护手册使用 xtask 案例集手册使用 trbcase 巡
  • 破解2018的Pycharm的与下载JetbrainsCrack-3.1-release-enc.jar的架包

    https pan baidu com s 1L2uJeQIwg jDvHa7t tB6Q 提取码 143o 安装 找到安装目录如下 这里面根据下的版本号来引入 我用的是3 1的 博客转发的是2 8的 要改成3 1 C Program Fi
  • 蓝桥杯2019年第十届真题-人物相关性分析

    题目 题目链接 题解 字符串 滑动区间 不想写题解了 bug没de出来 吃饭去了 代码 我的代码 不知道为什么一直就是91 有大佬帮忙看一下吗 include
  • mybatis 传递参数的7种方法

    文章目录 1 第一种方式 匿名参数 顺序传递参数 2 第二种方式 使用 Param注解 3 使用Map传递参数 4 用过java bean传递多个参数 5 直接使用JSON传递参数 6 传递集合类型参数List Set Array 7 参数
  • 以人为本

    软件团队想要保证高质量的软件交付 一般情况下会想到以下几点 多的测试人员 高薪资 福利 各种质量管理工具和手法 etc 我们有大量的实际经验表明 这些方法往往没有达到预期值 更有甚者 会不那么有效 为何会如此 通过不断的事后回顾 我想导致这
  • Kubernetes核心概念—工作负载

    Kubernetes的工作负载包括五种类型 Deployments 一个 Deployment 控制器为 Pods 和 ReplicaSets 提供声明式的更新能 StatefulSets StatefulSet 是用来管理有状态应用的工作
  • 行为型模式-解释器模式

    package per mjn pattern interpreter import java util HashMap import java util Map 环境角色类 public class Context 定义一个map集合 用
  • C++ 多态

    多态按字面的意思就是多种形态 当类之间存在层次结构 并且类之间是通过继承关联时 就会用到多态 C 多态意味着调用成员函数时 会根据调用函数的对象的类型来执行不同的函数 下面的实例中 基类 Shape 被派生为两个类 如下所示 实例 incl
  • 入行软件测试7年,才知道原来字节跳动这么容易进

    当前就业环境 裁员 失业消息满天飞 好像有一份工作就不错了 更别说高薪了 其实这只是一方面 而另一方面 各大企业依然求贤若渴 高技术人才依然紧缺 只要你技术过硬 拿个年薪50w不是问题 我的人生格言 比你优秀的人不可怕 可怕的是比你优秀的人
  • C# Winform基本知识、文件结构、控件简介

    1 程序入口 Program类 STAThread com线程模型 单线程单位 如果没有它 无法工作 Application 提供了一系列静态化方法和属性 来管理应用程序 Application EnableVisualStyles 启用应
  • Python 异常捕获与处理

    视频版教程 Python3零基础7天入门实战视频教程 异常捕获与处理 如果出现程序异常 我们不去捕获和处理 那么程序遇到异常 就直接终止 后续的代码无法继续执行 这将是可怕的事情 Python提供了完善的异常处理机制 可以实现捕获异常 处理