了解python的错误与异常

了解错误与异常

错误类型 描述
SyntaxError 语法错误,通常指代码有拼写错误、缺少括号、引号配对错误等。
NameError 名称错误,通常指变量或函数名称未定义或拼写错误。
TypeError
类型错误,通常因为尝试使用不支持的数据类型进行操作,例如对整数类型执行字符串方法。
IndexError 数组越界错误,通常因为尝试访问列表、元组或字典中不存在的索引导致。
KeyError 字典键错误,通常因为尝试访问不存在的字典键导致。
ValueError 值错误,通常指传递给函数的参数无效,例如使用负数调用平方根函数。
ZeroDivisionError 零除错误,通常因为尝试做除法时分母为零导致。
FileNotFound
Error
文件不存在错误,通常因为尝试打开不存在的文件导致。
...... ......
1.了解错误与异常
在Python中,错误(Error)是指语法或逻辑不正确导致程序无法正常运行的问题。与异常不同的是,错误通常会导致程序崩溃或无法执行。
语法错误(Syntax Error):由于代码中存在拼写错误、缺少冒号等情况而导致的编译错误。
名称错误(Name Error):使用未定义的变量或函数名称导致的错误。
类型错误(Type Error):尝试针对无效的数据类型进行操作导致的错误。
数组越界错误(Index Error):尝试访问列表、元组或字典中不存在的元素导致的错误 。
文件不存在错误(File Not Found Error):尝试打开不存在文件导致的错误。
及时识别和处理这些错误非常重要。可以通过调试工具、错误信息输出和捕获机制等方式来诊断和修复程序中存在的错误。
异常(Exception)是指程序运行时出现的问题。这些问题可能包括语法错误、逻辑错误或系统故障等情况,例如打开一个不存在的文件、除数为零、尝试访问无效的内存地址等。
当Python解释器遇到异常时,它会停止当前代码块的执行,并从调用堆栈中搜索异常处理程序来处理该异常。
如果没有找到合适的处理程序,将会抛出未处理的异常并终止程序运行。
# python的异常结构都是继承于BaseException
BaseException
├── SystemExit
├── KeyboardInterrupt
├── GeneratorExit
├── Exception
│ ├── StopIteration
│ ├── StopAsyncIteration
│ ├── ArithmeticError
│ │ ├── FloatingPointError
│ │ ├── OverflowError
│ │ └── ZeroDivisionError
│ ├── AssertionError
│ ├── AttributeError
│ ├── BufferError
│ ├── EOFError
│ ├── ImportError
│ │ └── ModuleNotFoundError
│ ├── LookupError
│ │ ├── IndexError
│ │ ├── KeyError
│ │ └── _NamespacePathFull
│ ├── MemoryError
│ ├── NameError
│ │ └── UnboundLocalError
│ ├── OSError
│ │ ├── BlockingIOError
│ │ ├── ChildProcessError
│ │ ├── ConnectionError
│ │ │ ├── BrokenPipeError
│ │ │ ├── ConnectionAbortedError
│ │ │ └── ConnectionRefusedError
│ │ ├── FileExistsError
│ │ ├── FileNotFoundError
│ │ ├── InterruptedError
│ │ ├── IsADirectoryError
│ │ ├── NotADirectoryError
│ │ ├── PermissionError
│ │ ├── ProcessLookupError
│ │ ├── TimeoutError
│ │ └── UnsupportedOperation
│ ├── ReferenceError
│ ├── RuntimeError
│ │ ├── NotImplementedError
│ │ ├── RecursionError
│ │ └── _TimeoutError
│ ├── SyntaxError
│ │ ├── IndentationError
│ │ └── TabError
│ ├── SystemError
│ ├── TypeError
│ ├── ValueError
│ │ ├── UnicodeError
│ │ └── _RemoteTraceback
│ ├── Warning
│ │ ├── BytesWarning
│ │ ├── DeprecationWarning
│ │ ├── FutureWarning
│ │ ├── ImportWarning
│ │ ├── PendingDeprecationWarning
│ │ ├── ResourceWarning
│ │ ├── RuntimeWarning
│ │ ├── SyntaxWarning
│ │ ├── UnicodeWarning
│ │ └── UserWarning
│ └── _OptionError
└── SystemError
2.异常处理-捕捉
# 这个继承结构表明,所有的异常类都是从BaseException中派生而来的。其中,Exception是最常见的异常类,包括了很多其他的具体异常,例如ArithmeticError、ImportError、TypeError等。
Python中异常类的继承关系非常复杂,其中的每个异常类都有其特定的用途和含义。熟悉这些异常类的继承关系可以帮助我们在处理程序中出现的异常情况时更加得心应手。
在计算机编程中,异常是指出现了不可预测、不符合正常规则和预期的情况。这些异常可能会导致程序崩溃、数据丢失等问题。为了解决这些问题,通常采取异常处理机制来对这些异常进行捕获和处理,以保证程序的正确性和稳定性。在Python中,当程序执行过程中发生异常时,解释器会寻找相应的异常处理逻辑来处理这些异常。如果存在合适的异常处理逻辑,则程序可以继续正常执行,否则将会抛出一个未被处理的异常。
Python中提供了try...except语句和finally子句来实现异常处理机制。
try:
# 可能会出现异常的代码
except [异常类型1]:
# 当出现异常类型1时执行的代码
except [异常类型2]:
# 当出现异常类型2时执行的代码
except:
# 当出现其他异常时执行的代码
else:
# 当没有出现任何异常时执行的代码
finally:
# 无论是否出现异常都会执行的代码
try语句块用于包含可能出现异常的代码,然后except语句块用于定义当出现特定异常时需要采取的操作。
如果没有指定具体的异常类型,则except语句块将捕获所有类型的异常。
在try...except语句中,可以使用多个except子句来处理各种不同类型的异常。
同时,还可以使用else子句来在没有任何异常发生时执行一些特定的操作。
最后,我们可以使用finally子句来定义无论是否出现异常都需要执行的代码,例如释放资源等。
try:
num1 = int(input("请输入第一个数:"))
num2 = int(input("请输入第二个数:"))
result = num1 / num2
print(f"{num1}除以{num2}的结果为:{result}")
except ZeroDivisionError:
print("除数不能为零!")
except ValueError:
print("输入的不是有效的数字!")
except:
3.异常处理-主动抛出
4.异常处理--自定义异常类
print("发生了其他错误!")
else:
print("没有出现任何错误!")
finally:
print("程序结束!")
raise语句用于手动抛出异常
# 异常类型表示需要抛出的异常类型,错误信息表示异常相关的错误信息。
def divide(num1, num2):
if num2 == 0:
raise ZeroDivisionError("除数不能为零!")
return num1 / num2
try:
result = divide(10, 0)
except ZeroDivisionError as e:
print(f"发生了错误:{e}")
else:
print(f"结果为:{result}")
finally:
print("程序结束!")
# 定义了一个divide函数,在其中使用了raise语句手动抛出了一个除数为零的异常。
# 在主程序中,我们可以采用try...except语句来捕获这个异常并进行处理。
有时候,在程序中可能需要自定义一些异常类来表达特定的错误或者状态信息。在Python中,可以通过继承Exception类来定义自己的异常类。
class MyException(Exception):
def __init__(self, message):
super().__init__(message)
self.message = message
def __str__(self):
return f"MyException: {self.message}"
try:
raise MyException("这是一个自定义异常!")
except MyException as e:
print(e)
5.异常处理-断言
finally:
print("程序结束!")
# 首先定义了一个MyException异常类,它继承自Python内置的Exception类,并实现了__init__()和
__str__()方法来初始化异常对象并定义异常信息输出格式。然后,在主程序中,使用raise语句手动抛出了
一个MyException异常,并使用try...except语句捕获这个异常并进行处理
断言(Assert)是一种常用的调试工具,它用于对程序运行时的某些条件进行检查,并捕获由于不符合预期条件而导致程序崩溃或出现错误的情况。
assert语句用于在程序运行期间进行条件检查。
如果指定的条件表达式的结果为False,则会抛出一个AssertionError异常。
assert condition, [message]
# condition表示需要进行检查的条件表达式,message是可选参数,用于指定出现异常时输出的错误信
息。
def divide(num1, num2):
assert num2 != 0, "除数不能为零!"
return num1 / num2
try:
result = divide(10, 0)
except AssertionError as e:
print(f"发生了错误:{e}")
else:
print(f"结果为:{result}")
finally:
print("程序结束!")
# 定义了一个divide函数,在其中使用了assert语句来检查除数是否为零。如果除数为零,则会抛出一个AssertionError异常。在主程序中,我们可以采用try...except语句来捕获这个异常并进行处理。
在程序开发和测试阶段使用assert语句可以帮助我们快速发现程序中的问题,但在生产环境中使用时需要慎重考虑,因为assert语句可能会影响程序的性能和稳定性。
当然,在一些特殊的情况下,例如对于安全性要求较高的系统或者对程序正确性要求较高的场景,使用assert语句是非常有用的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux | 配置docker环境时yum一直出错的解决方法

yum出错 Centos 7版本出错问题补充:什么是yumyum 和 apt 有什么区别? Centos 7版本 [rootlocalhost yum.repos.d]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)出错问题 问题1 Could not retrieve mirrorlist http://mirrorlist.ce…

SQLite 3.47.0 发布,大量新功能来袭

SQLite 开发团队于 2024 年 10 月 21 日发布了 SQLite 3.47.0 版本,我们来了解一下新版本的改进功能。 触发器增强 SQLite 3.47.0 版本开始,触发器函数 RAISE() 的 error-message 参数可以支持任意 SQL 表达式。在此之前,该参数只能是字符串…

论1+2+3+4+... = -1/12 的不同算法

我们熟知自然数全加和, 推导过程如下, 这个解法并不难,非常容易看懂,但是并不容易真正理解。正负交错和无穷项计算,只需要保持方程的形态,就可以“预知”结果。但是这到底说的是什么意思?比如和…

Nodejs使用pkg打包为可执行文件

安装pkg npm install -g pkg查看pkg命令 pkg --help修改package.json 新增bin入口配置 {"name": "takescreenshot","version": "1.0.0","bin": "app.js", // 新增bin入口配置"scripts": {"t…

day10:ssh服务-跳板机

一,ssh服务概述 ssh服务概述 ssh(Secure Shell)是一种用于在不安全网络中进行安全登录、远程执行命令及传输文件的网络协议。它通过加密技术来保证通信的保密性和完整性,主要用于替代不安全的telnet、rlogin、rsh等协议。ssh通常…

计算机视觉-边缘检测实验报告

实验一 边缘检测实验 一、实验目的 1.理解并掌握 Sobel 算子和 Canny 算子的基本原理和应用。 2.学习如何在图像处理中使用这两种算子进行边缘检测。 3.比较 Sobel 算子和 Canny 算子的性能,了解各自的优缺点。 4&#xff0…

【mysql进阶】4-3. 页结构

页面结构 ⻚在MySQL运⾏的过程中起到了⾮常重要的作⽤,为了能发挥更好的性能,可以结合⾃⼰系统的业务场景和数据⼤⼩,对⻚相关的系统变量进⾏调整,⻚的⼤⼩就是⼀个⾮常重要的调整项。同时关于⻚的结构也要有所了解,以…

HTTP协议讲解

前瞻: 认识URL 1.ipport 2.平时上网,就是进程间通信 3.上网行为,1.获取资源 2.上传数据 相当于I/O 4.http协议采用tcp协议 网页 图片 音乐其实都是资源 Http请求 http request Method:Get/Post资源/路径&#xff1a…

MyBatis缓存详解(一级缓存、二级缓存、缓存查询顺序)

固态硬盘缺陷:无法长时间使用,而磁盘只要不消磁,只要不受到磁影响,就可以长期使用,因此绝大多数企业还是使用磁盘来存储数据 像mysql这种关系型数据库中的数据存储在磁盘中,为方便查询,减少系统…

Linux文件类型和根目录结构

Linux文件类型和根目录结构 1.文件类型 字符文件类型说明~普通文件类似于Windows的记事本d目录文件类似于windows文件夹c字符设备文件串行端口设备,顺序读写,键盘b块设备文件可供存储的接口设备,随机读写,硬盘p管道文件用于进程…

工程项目管理软件怎么选?推荐7款实用工具

本文提及的有主流7款工程项目管理系统软件有: 1. Worktile;2. 广联达BIM5D;3. 泛普软件;4. 明源云工程;5. 飞书;6. Smartsheet;7. Procore。 很多工程项目管理人员常常头疼如何有效地管理多个项目&#xff…

保研考研机试攻略:python笔记(1)

🐨🐨🐨宝子们好呀 ~ 我来更新欠大家的python笔记了,从这一篇开始我们来学下python,当然,如果只是想应对机试并且应试语言以C和C为主,那么大家对python了解一点就好,重点可以看高分篇…

【机器学习】——numpy教程

文章目录 1.numpy简介2.初始化numpy3.ndarry的使用3.1numpy的属性3.2numpy的形状3.3ndarray的类型 4numpy生成数组的方法4.1生成0和1数组4.2从现有的数组生成4.3生成固定范围的数组4.4生成随机数组 5.数组的索引、切片6.数组的形状修改7.数组的类型修改8.数组的去重9.ndarray的…

接口测试(七)jmeter——参数化(RandomString函数)

一、RandomString函数 需求:模拟10个用户注册 1. 【工具】–>【函数助手对话框】 2. 选择RandomString函数 假设手机号码前3位设置为固定数值136,后8位可用RandomString函数随机产生数值 ① Random string length:8(随机长度…

记录element-ui改造select显示为table,并支持多查询条件

最近遇到的一个需求 , 很有趣,是需要一个select组件,要求显示工号,员工姓名,以及区域 三个字段,并且要支持三个字段的查询。显然element原生的组件不适用,这时候我们需要改造一下,把…

基于大数据 Python Vue 美食推荐可视化系统(源码+LW+部署讲解+数据库)

!!!!!!!!! 会持续一直更新下去 有问必答 一键收藏关注不迷路 源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwdjf1d 提取码: jf1d &#…

Java后端面试题:Java基础篇

目录 Java基础 1.请你说说Java中基本数据类型的bit长度? 2.switch支持哪些数据类型?支持long么? 3.讲一下常见编码方式? 4.char能不能存储中文? 5.为什么数组索引从0开始呢?假如从1开始不行吗&#xf…

w003基于Springboot的图书个性化推荐系统的设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

Git 课程任务

破冰和创建项目 https://github.com/WangXiuhao/loveailab