当前位置: 首页 > news >正文

Python课堂16——异常查找及处理

文章目录

  • 前言
  • 一、异常是什么?
  • 二、异常处理
    • 1. 根据提示
    • 2. 捕获异常
    • 3.抛出异常——raise
    • 4.应用场景
  • 总结


前言

我们在日常编写代码的时候,难免会遇到一些不可控的错误,这无疑会导致程序的终止,大大降低了程序的实用性,那么我们如何能优化这种情况呢?接下俩就让我们来详细了解一下吧!


一、异常是什么?

在Python中,异常是指在程序执行过程中出现的错误或意外情况。当Python解释器遇到异常时,会中断当前的执行流程,并尝试寻找异常处理程序来处理异常。如果找不到合适的异常处理程序,程序将终止并打印出错误信息。

分类

  1. 语法错误:
    syntaxerror:代码不符合Python语法规定
    ZeroDivisionError:除数为0
    KeyError:字典中不存在这个键
    AttributeError:对象没有这个属性
    TypeError:类型错误,传入的类型不匹配
    ImportError:无法引入模块或包,基本上是路径问题或名称错误

  2. 逻辑错误
    nameerror:使用一个还没有被定义的变量
    indexerror:下标/索引超出范围
    IOError:输入/输出操作错误,基本上是无法打开文件(比如你要读的文件不存在)
    ValueError:传入的值有误

二、异常处理

1. 根据提示

traceback找出错误点,并改正
xxxError:会显示异常的类型,以及具体的提示

2. 捕获异常

要保证程序的容错性和可靠性,遇到错误不直接崩溃,而是有对应的异常机制处理

  1. 捕获异常一
    语法:
    try:
      被检测的代码块
    except 异常类型 as e:
      检测到异常要执行的代码块

代码如下:

a = int(input('请输入第一个数字:'))
b = int(input('请输入第二个数字:'))
try:print(a/b)
except ZeroDivisionError as error:print(error)print('您输入的数据有误!')
# 执行的原理:执行try里的子代码块,如果字代码块没有触发异常,直接跳过except语句,try语句执行完毕
# 如果执行try发生异常,则跳过异常语句,执行except语句,except和指定的异常类型进行匹配,匹配成功就执行except代码,如果匹配不成功,异常没有捕获到,输出错误。
  1. 捕获异常二
    try检测的代码块出现了两个或多个异常,可以用多个except进行匹配,或者把多个异常类型放在一个元组内,用一个except匹配

代码如下:

try:a = int(input('请输入第一个数字:'))b = int(input('请输入第二个数字:'))print(a / b)
except (ZeroDivisionError, ValueError) as error:print(error)print('您输入的数据有误!')
except ValueError as e:print(e)  # invalid literal for int() with base 10: '10.0'
  1. 捕获异常三
    程序在执行出现错误的时候,出现逻辑错误,不能确定具体是什么逻辑错误,万能异常 Exception 代表所有异常类型
    作用:能捕获到大多数的异常,但是不能捕获语法错误

代码如下:

try:li = [1, 2, 3]print(li[0])a = int(input('请输入第一个数字:'))b = int(input('请输入第二个数字:'))print(a / b)
except Exception as e:print(e)

注意Exception的首字母必须要大写,不能捕获语法异常

  1. 捕获异常四
    当检测的代码块没有出现任何异常的时候,执行else代码

代码如下:

try:name = 'a'print(name)print(int('10'))print(float(10.14))
except Exception as e:print(e)
else:print('程序没有出现错误')
  1. 捕获异常五
    不管有没有检测到异常,都会执行 finally

代码如下:

'''语法:try:被检测的代码块except 异常类型 as e:检测到异常要执行的代码块else:没有捕获到异常执行的代码finally:无论是否有异常都会执行注意:finally和try可以单独连用作用:回收资源的操作,关闭已经打开的文件,关闭打开的数据库
'''try:name = 'a'print(name)print(int('10'))print(float(10.14))
except Exception as e:print(e)
else:print('程序没有出现错误')
finally:print('不管是否异常都会执行')  # 一般做一些文件的关闭

3.抛出异常——raise

前面都是不符合Python解释器的语法,由解释器抛出异常。我们也可以自己定义异常,在满足什么条件下主动抛出。

语法:
1.创建Exception(‘错误的信息’)
2.raise抛出即可
e = Exception(‘错误’)
raise e

代码如下:

def login():count = 0while True:username = input('请输入账号')code = input('请输入验证码')if code == '123456':count += 1if count == 5:e = Exception('验证码输入错误超过五次,请一分钟后重试')raise e
try:login()
except Exception as e:print(e)

4.应用场景

  1. 写程序:打开了一个文件,对文件执行读写操作,过程中遇到一些逻辑错误,引发了异常,通过try except进行捕获,注意写程序:打开了一个文件,对文件执行读写操作,过程中遇到一些逻辑错误,引发了异常,通过try except进行捕获。

代码如下:

def func():li = []return li[0]
func()
try:func()
except Exception as e:print(e)# 函数:处理某一个功能的代码,异常捕获是给该函数唯一增加的功能
  1. 利用异常捕获来检查和简写代码

代码如下:

def func():while True:name = input('请输入账号名:')if len(name) < 10: # 正确逻辑if name == 'Abner':print('账号名输入正确')breakelse:print('请重新输入')else:print('请重新输入')def func():while True:name = input('请输入账号名:')if len(name) > 10:print('请重新输入')continueif name == 'Abner':print('账号名输入正确')break

总结

本节主要讲述了写代码过程中出现的错误以及解决方法,这就为我们之后的代码编写中提供了一个新的思路。

美好的一天,上帝不会就这样给你,需要自己去创造。

相关文章:

Python课堂16——异常查找及处理

文章目录 前言一、异常是什么&#xff1f;二、异常处理1. 根据提示2. 捕获异常3.抛出异常——raise4.应用场景 总结 前言 我们在日常编写代码的时候&#xff0c;难免会遇到一些不可控的错误&#xff0c;这无疑会导致程序的终止&#xff0c;大大降低了程序的实用性&#xff0c;…...

任务书参考答案-模块1任务一

1.根据网络拓扑图所示,按照IP 地址规划表,对防火墙的名称、各接口IP 地址进行配置。共8 分,每错1 处(行)扣1 分,扣完为止。地址、安全域、接口(状态为UP)、名称都正确。 2.根据网络拓扑图所示,按照IP 地址规划表,对三层交换机的名称进行配置,创建VLAN 并将相应接口划…...

2023最新盲盒交友脱单系统源码

源码获取方式 搜一搜&#xff1a;万能工具箱合集 点击资源库直接进去获取源码即可 如果没看到就是待更新&#xff0c;会陆续更新上 或 源码软件库 最新盲盒交友脱单系统源码&#xff0c;纸条广场&#xff0c;单独抽取/连抽/同城抽取/高质量盒子 新增功能包括心动推荐&#xff…...

Half-Band filter(半带滤波器)

Half-Band filter 引言正文symmetric half-band filtersamplitude half-band filterspower half-band filters引言 今天看文章的时候遇到了一个名词,Half-Band filter,中文名称半带滤波器,特来记录一下。 正文 假设我们通过采样获取到的信号带宽为 f s f_s...

2024年环境安全科学、材料工程与制造国际学术会议(ESSMEM2024)

【EI检索】2024年环境安全科学、材料工程与制造国际学术会议&#xff08;ESSMEM2024) 会议简介 我们很高兴邀请您参加将在三亚举行的2024年环境安全科学、材料工程和制造国际学术会议&#xff08;ESSMEM 2024&#xff09;。 ESSMEM2024将汇集世界各国和地区的研究人员&…...

常用路径规划算法简介及python程序

目录 1、前言2、D*算法2.1简介2.2优缺点2.2.1 优点2.2.2 缺点 2.3 python程序 3、A*算法3.1 优缺点&#xff1a;3.1.1 优点&#xff1a;3.1.2 缺点&#xff1a; 3.2 python程序 4、人工势场算法4.1优缺点4.1.1优点&#xff1a;4.1.2缺点&#xff1a; 4.2 python程序 5、Dijkstr…...

计算x的对数math.log(x)math.log(x, a)math.log2(x)math.log10(x)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算x的对数 math.log(x) math.log(x, a) math.log2(x) math.log10(x) [太阳]选择题 以下说法错误的是&#xff08;&#xff09; import math print("【执行】e math.exp(1)") e …...

Golin 弱口令/漏洞/扫描/等保/基线核查的快速安全检查小工具

下载地址&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/db6afba6de1f 主要功能 主机存活探测、漏洞扫描、子域名扫描、端口扫描、各类服务数据库爆破、poc扫描、xss扫描、webtitle探测、web指纹识别、web敏感信息泄露、web目录浏览、web文件下载、等保安全风险问题风险…...

【JavaEE】_HttpServlet类

目录 1. init方法 2. destory方法 3. service方法 4. servlet生命周期 前文已经提及到&#xff1a;servlet是tomcat提供的&#xff0c;用于操作HTTP协议的一组API&#xff0c;可以将这组API理解为HTTP服务器的框架&#xff1b; 编写一个servlet程序&#xff0c;往往都要继…...

11-pytorch-使用自己的数据集测试

b站小土堆pytorch教程学习笔记 import torch import torchvision from PIL import Image from torch import nnimg_path ../imgs/dog.png imageImage.open(img_path) print(image) # imageimage.convert(RGB)transformtorchvision.transforms.Compose([torchvision.transforms.…...

数据安全之路:深入了解MySQL的行锁与表锁机制

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 数据安全之路&#xff1a;深入了解MySQL的行锁与表锁机制 前言基础innodb中锁与索引的关系如何避免表锁 前言 在当今数据密集的应用中&#xff0c;数据库锁成为了确保数据一致性和并发操作的关键工具…...

【深度学习】Pytorch 教程(十二):PyTorch数据结构:4、张量操作(3):张量修改操作(拆分、拓展、修改)

文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor&#xff08;张量&#xff09;1. 维度&#xff08;Dimensions&#xff09;2. 数据类型&#xff08;Data Types&#xff09;3. GPU加速&#xff08;GPU Acceleration&#xff09; 2、张量的数学运算1. 向量运算2. 矩阵…...

适合新手博主站长使用的免费响应式WordPress博客主题JianYue

这款JianYue主题之所以命名为 JianYue&#xff0c;意思就是简单而不简约的。是根据Blogs主题优化而成&#xff0c;剔除了一些不必要的功能及排版&#xff0c;仅保留一种博客布局&#xff0c;让新手站长能够快速手上WordPress。可以说这款主题比较适合新手博主站长使用&#xff…...

FPGA OSERDESE2

Output Parallel-to-Serial Logic Resources (OSERDESE2) OSERDESE2 在Xilinx 7 系列器件是一款专用的并行至串行转换器,具有特定的时钟和逻辑资源,旨在促进高速源同步接口的实现。每个OSERDESE2模块都包括一个专用的数据串行器和 3 状态控制。数据和 3 态串行器都可以在 SD…...

如何卸载Erlang以及RabbitMQ

参考以下两篇文章 https://blog.csdn.net/m0_49605579/article/details/130196536 Windows如何完全卸载RabbitMQ和Erlang_删除注册表hkey_local_machine\software\ericsson\erlang\e-CSDN博客 首先我是按照链接一的操作进行了卸载&#xff0c;但是Erlang的安装目录一直删除不…...

ros自定义action记录

文章目录 自定义action1. 定义action文件2. 修改 package.xml3. 修改 CMakeLists.txt4. 运行 catkin build5. simple_action_server.py6. simple_action_client.py 测试 自定义action ros 版本&#xff1a;kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.t…...

挑战30天学完Python:Day18 正则表达式

&#x1f4d8; Day 18 &#x1f389; 本系列为Python基础学习&#xff0c;原稿来源于 30-Days-Of-Python 英文项目&#xff0c;大奇主要是对其本地化翻译、逐条验证和补充&#xff0c;想通过30天完成正儿八经的系统化实践。此系列适合零基础同学&#xff0c;或仅了解Python一点…...

力扣● 343. 整数拆分 ● 96.不同的二叉搜索树

● 343. 整数拆分 想不到&#xff0c;要勇于看题解。 关键在于理解递推公式。 1、DP数组及其下标的含义&#xff1a;dp[i]是分解i这个数得到的最大的乘积。 2、DP数组如何初始化&#xff1a;dp[0]和dp[1]都没意义&#xff0c;所以直接不赋值&#xff0c;初始化dp[2]1即可。…...

游戏同步+游戏中的网络模块

原文链接&#xff1a;游戏开发入门&#xff08;九&#xff09;游戏同步技术_游戏数据同步机制流程怎么开发-CSDN博客 游戏开发入门&#xff08;十&#xff09;游戏中的网络模块_游戏开发组网-CSDN博客 3.同步技术的基本常识&#xff1a; a.同步给谁&#xff1f;某个用户&…...

【03】逆序数组

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、逆序函数是什么&#xff1f; 二、逆序函数原码 1.直接逆序 2.创建临时数组逆序 三、结言 &#x1f4a5;一、逆序函数是什么&#xff1f; 示例&#xff1a;输入1 4 …...

Postman+Newman自动化测试报告生成全攻略:让微信小程序接口回归测试5分钟搞定

PostmanNewman自动化测试报告生成全攻略&#xff1a;让微信小程序接口回归测试5分钟搞定 在追求研发效能的今天&#xff0c;手工重复执行接口测试已成为效率瓶颈。想象一下&#xff1a;每次微信小程序迭代更新&#xff0c;测试工程师都需要在Postman中逐个点击上百个接口用例&a…...

Vue3-DateTime-Picker:现代化Vue 3日期时间选择器的完整指南

Vue3-DateTime-Picker&#xff1a;现代化Vue 3日期时间选择器的完整指南 【免费下载链接】vue3-date-time-picker Datepicker component for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-date-time-picker 在当今的Web开发中&#xff0c;日期时间选择器是几…...

CentOS LVM实战:动态调整home与root分区空间,解决系统盘爆满难题

1. 当服务器根分区告急时&#xff0c;你该怎么办&#xff1f; 最近接手了一台运行了3年的CentOS服务器&#xff0c;刚登录就发现系统弹出了"磁盘空间不足"的警告。df -h一看&#xff0c;好家伙&#xff0c;根分区&#xff08;/&#xff09;已经用了98%&#xff0c;而…...

Rust Trait实现:引用类型自动继承与泛型解决方案

1. 项目概述&#xff1a;Rust Trait实现的“引用陷阱”与泛型解决方案在Rust开发中&#xff0c;我们经常需要为自定义类型实现各种Trait来定义其行为。一个看似理所当然的直觉是&#xff1a;如果类型T实现了TraitSpeaker&#xff0c;那么它的引用&T也应该自动实现Speaker。…...

如何快速上手网易游戏NPK文件解包工具:新手3步完整教程

如何快速上手网易游戏NPK文件解包工具&#xff1a;新手3步完整教程 【免费下载链接】unnpk 解包网易游戏NeoX引擎NPK文件&#xff0c;如阴阳师、魔法禁书目录。 项目地址: https://gitcode.com/gh_mirrors/un/unnpk 你是否对网易游戏如《阴阳师》、《魔法禁书目录》中的…...

FModel:解锁虚幻引擎游戏资源的终极工具指南

FModel&#xff1a;解锁虚幻引擎游戏资源的终极工具指南 【免费下载链接】FModel Unreal Engine Archives Explorer 项目地址: https://gitcode.com/gh_mirrors/fm/FModel 你是否曾好奇过《堡垒之夜》中炫酷的皮肤是如何制作的&#xff1f;或是想要探索《Valorant》中精…...

Taotoken助力初创团队以可控成本集成大模型能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken助力初创团队以可控成本集成大模型能力 为产品添加智能对话功能是许多初创团队提升用户体验的关键一步。然而&#xff0c;…...

TegraRcmGUI完整指南:Windows上最简单快速的Switch注入工具教程

TegraRcmGUI完整指南&#xff1a;Windows上最简单快速的Switch注入工具教程 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是Windows平台上最简…...

运放噪声深度解析:从原理到工程实践的计算与优化

1. 项目概述&#xff1a;为什么我们需要关心运放的噪声&#xff1f;如果你曾经调试过一个高精度的信号调理电路&#xff0c;比如一个微弱的传感器信号放大链路&#xff0c;或者一个高分辨率的ADC前端&#xff0c;你大概率遇到过这样的场景&#xff1a;理论上&#xff0c;你的电…...

CircuitPython嵌入式开发:从代码编辑、串口调试到库管理的完整工作流

1. 从零开始&#xff1a;CircuitPython的嵌入式开发哲学如果你和我一样&#xff0c;是从Arduino或者传统的C语言嵌入式开发转过来的&#xff0c;第一次接触CircuitPython的感觉&#xff0c;大概就像从手动挡汽车换到了电动车。那种“拧钥匙、挂挡、踩离合”的繁琐步骤&#xff…...