【Python 基础教程】错误与异常的处理

简介: 【Python 基础教程】错误与异常的处理

💓前言


继续更新Python基础语法,到目前为止Python基础语法已经接近了尾声,本次错误与异常处理更新完后会对文件、数据库、包管理、模块管理、正则表达式的使用进行更新。完成这几个大致的任务之后将会更新爬虫与数据分析。本专栏所写的东西非常的适用初学者,当然也非常适合老手,每一部分都有很全面的编程技巧。相信大家看完后会感觉受益匪浅。(文末附有常见异常表)


👻异常与错误的概念


错误顾名思义就是由于某种原因,产生了不符合我们预期的结果。我们的代码在运行时非常的有可能出现错误,我们有时又称这种现象为BUG,在Python中异常通常指的是我们的Python解释器发现了我们程序中存在的错误,自己无法解决该错误的时候向操作系统提出了报告引发程序中断。正如现实中我们个人犯错而监管我们的人发现我们的错误,发现我们的异常举动并进行处理。及时帮我们纠正错误行为。


👻错误分类


👾语法错误


语法错误又称为编译错误,是计算机操作系统在执行你的代码的时候,由于你代码存在语法性问题无法开始执行程序导致的错误,一般就是函数名、关键字用错导致或者进行导包的时候导入了不存在的包。随着编译器的迭代更新不断变强,这种错误已经非常少见了。Python中编译错误提示SyntaxErrorl例如下图(缺少一半括号):


e1c5236da11d4215a222d73df684ff60.png


👾运行时错误


运行时错误指的是程序通过了编译,计算机操作系统开始执行你的程序在代码执行过程中出由于编程者的疏忽,产生了代码之间的矛盾导致的错误。例如:没有考虑到数组边界或者变量范围导致数组越界、零除异常...这种错误会导致你的程序突然就挂掉一定情况下会造成灰常大的损失。例如以下情况:


707429b847fc4490b1aef4f75e3f4cac.png



👾逻辑错误


这种错误往往是人们最烦恼的错误,因为操作系统不会直接抛出异常给我们看,你的程序也可以正常运行,但是对程序输入值之后得到的结果就是不对。非常的气人,我们能改进这种错误的方式就是baidu、动脑思考、进行调试、实在不行找个老鸟帮你看看。常见的错误有:死循环、表达式错误、局部全局变量混用....


👻异常处理机制


👾捕获异常并处理


Python中采用了结构化的异常处理机制我们可以通过try对异常进行捕获,然后在except中进行异常的处理。最后在finally中进行资源释放之类的工作(有没有异常finally中的代码都会执行),与其他语言不同的是,在Python中引入了一个else机制,else中的语句只有在try中的代码没有异常的时候才会执行。有异常就不执行。详细操作见下面代码,正如所见,可以对多个类型的异常进行捕获。对多个异常进行捕获的话需要将类型涵盖范围较小的异常放在前面,而在捕获之前一般由try代码块中的代码或者函数进行异常的抛出


# 异常的捕获
a=int(input('输入除数:'))
b=int(input('输入被除数:'))
try:
    res=a/b
except ZeroDivisionError:
    print('除数不可以为0')
    # 相同处理方式的异常可以这么写
except (BaseException,TypeError):
    print('有错误')
else:
    print('您的结果为',res)
finally:
    print('感谢使用!')


👾主动抛出异常


我们可以轻松的进行异常的捕获并进行解决。但是有时候我们有一种需求就是将错误抛出给上一层进行处理。这时候主动抛出异常就登场了。在Python中主动抛出异常使用的是raise关键字。raise关键字一般与自定义异常类一块进行使用,所以大家先记住raise是主动抛出异常的关键字,待会到自定义异常类处看代码即可。


👾断言处理


断言处理使用语法为:assert <布尔表达式>或者assert <布尔值表达式> , <字符串表达式>。assert会先对布尔值表达式进行判断,如果表达式为True就不进行操作,否则会抛出异常。并在抛出的异常中输出字符串表达式的信息。具体操作可以看以下代码:



'''
3 录入一个学生的成绩,把该学生的成绩转换为A优秀、B良好、C合格、D不及格的形式,
最后将该学生的成绩打印出来。要求使用assert断言处理分数不合理(小于0或者大于100)的情况
请编写程序。
'''
n=int(input())
assert n in range(101),"您输入的成绩不合理!"
if n>=85:
  print("优秀!")
elif n>=70:
  print("良好!")
elif n>=60:
  print("合格!")
else:
  print("不及格!")

👾自定义异常类


Python官方库中提供了一系列的异常处理类,在Python中所有的异常均由类实现,所有的异常类又继承自BaseException类,程序运行时出现的异常大多继承自Exception类。Python支持自定义异常类。自定义异常类一般继承Exception或者其子类名称一般以Exception或者Error命名。


自定义异常类以及主动抛弃异常


'''
自己定义一个异常类,继承Exception类, 捕获下面的过程:判断input()输入的字符串长度是否小于5, 
如果小于5,比如输入长度为3则输出:"The input is of length 3, expecting at least 5“,
大于5则输出"success”。 
'''
class StrLenError(Exception):
  def __init__(self,s):
    Exception.__init__(self,s)
    self.s =s
  def __str__(self):
      return f"The input is of length {len(self.s)}, expecting at least 5"
n=input()
if len(n)<=5:
  raise StrLenError(n)
else:
  print("success")

9d5ac064657f43cb8b2925246eed530c.png


👾常见异常及释义


以下是一些常见的类及引发该类异常的错误描述:


1667996833122.png

b293f728b11a4f1e9f77bd4e9df15cd4.png





目录
打赏
0
0
0
0
3
分享
相关文章
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
milvus-use教程 python
本项目参考vanna项目,获取数据库元数据和问题SQL对,存入Milvus向量数据库,并进行相似性检索。采用m3e-large嵌入模型,通过DatabaseManager类实现数据库连接持久化,MilvusVectorStore类封装了Milvus操作方法,如创建集合、添加数据和查询。项目提供init_collections、delete_collections等文件用于初始化、删除和管理集合。所用Milvus版本较新,API与vanna项目不兼容。 [项目地址](https://gitee.com/alpbeta/milvus-use)
40 9
[oeasy]python065python报错怎么办_try_试着来_except_发现异常
本文介绍了Python中处理异常的基本方法,重点讲解了`try`和`except`的用法。通过一个计算苹果重量的小程序示例,展示了如何捕获用户输入错误并进行处理。主要内容包括: 1. **回顾上次内容**:简要回顾了Shell环境、Python3游乐场和Vim编辑器的使用。 2. **编写程序**:编写了一个简单的程序来计算苹果的总重量,但发现由于输入类型问题导致结果错误。 3. **调试与修正**:通过调试发现输入函数返回的是字符串类型,需要将其转换为整数类型才能正确计算。
54 32
[oeasy]python066_如何捕获多个异常_try_否则_else_exception
本文介绍了Python中`try...except...else`结构的使用方法。主要内容包括: 1. **回顾上次内容**:简要复习了`try`和`except`的基本用法,强调了异常处理的重要性。 2. **详细解释**: - `try`块用于尝试执行代码,一旦发现错误会立即终止并跳转到`except`块。 - `except`块用于捕获特定类型的异常,并进行相应的处理。 - `else`块在没有异常时执行,是可选的。 3. **示例代码**:通过具体例子展示了如何捕获不同类型的异常(如`ValueError`和`ZeroDivisionError`),并解释了异常处理
50 24
Python语法糖详解教程
《Python语法糖详解教程》介绍了编程语言中的“语法糖”,即通过特殊语法形式简化代码,使代码更简洁、易读和高效。文章详细解析了列表推导式、字典推导式、元组解包、条件表达式、with语句和装饰器等核心语法糖,并提供了具体示例和最佳实践指南。通过这些技巧,开发者可以在保持底层功能不变的前提下,显著提升开发效率和代码质量。
29 8
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
351 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
102 8
|
3月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
167 7
|
3月前
|
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
60 4

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等