当前位置: 首页 > 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 …...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...