Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python 异常处理

python 异常处理

原创
作者头像
ruochen
修改于 2021-02-22 02:16:07
修改于 2021-02-22 02:16:07
2.4K0
举报

异常

  • 广义上的错误分为错误和异常
  • 错误指的是可以人为避免
  • 异常是指在语法逻辑正确的而前提下,出现的问题
  • python中,异常是一个类,可以处理和使用

异常的分类

代码语言:txt
AI代码解释
复制
BaseException 所有异常的基类
代码语言:txt
AI代码解释
复制
Exception 常见错误的基类
代码语言:txt
AI代码解释
复制
ArithmeticError 所有数值计算错误的基类
代码语言:txt
AI代码解释
复制
Warning 警告的基类
代码语言:txt
AI代码解释
复制
AssertError 断言语句(assert)失败
代码语言:txt
AI代码解释
复制
AttributeError 尝试访问未知的对象属性
代码语言:txt
AI代码解释
复制
DeprecattionWarning 关于被弃用的特征的警告
代码语言:txt
AI代码解释
复制
EOFError 用户输入文件末尾标志EOF(Ctrl+d)
代码语言:txt
AI代码解释
复制
FloattingPointError 浮点计算错误
代码语言:txt
AI代码解释
复制
FutureWarning 关于构造将来语义会有改变的警告
代码语言:txt
AI代码解释
复制
GeneratorExit generator.close()方法被调用的时候
代码语言:txt
AI代码解释
复制
ImportError 导入模块失败的时候
代码语言:txt
AI代码解释
复制
IndexError 索引超出序列的范围
代码语言:txt
AI代码解释
复制
KeyError 字典中查找一个不存在的关键字
代码语言:txt
AI代码解释
复制
KeyboardInterrupt 用户输入中断键(Ctrl+c)
代码语言:txt
AI代码解释
复制
MemoryError 内存溢出(可通过删除对象释放内存)
代码语言:txt
AI代码解释
复制
NamerError 尝试访问一个不存在的变量
代码语言:txt
AI代码解释
复制
NotImplementedError 尚未实现的方法
代码语言:txt
AI代码解释
复制
OSError 操作系统产生的异常(例如打开一个不存在的文件)
代码语言:txt
AI代码解释
复制
OverflowError 数值运算超出最大限制
代码语言:txt
AI代码解释
复制
OverflowWarning 旧的关于自动提升为长整型(long)的警告
代码语言:txt
AI代码解释
复制
PendingDeprecationWarning 关于特征会被遗弃的警告
代码语言:txt
AI代码解释
复制
ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
代码语言:txt
AI代码解释
复制
RuntimeError 一般的运行时错误
代码语言:txt
AI代码解释
复制
RuntimeWarning 可疑的运行行为(runtime behavior)的警告
代码语言:txt
AI代码解释
复制
StopIteration 迭代器没有更多的值
代码语言:txt
AI代码解释
复制
SyntaxError Python的语法错误
代码语言:txt
AI代码解释
复制
SyntaxWarning 可疑的语法的警告
代码语言:txt
AI代码解释
复制
IndentationError 缩进错误
代码语言:txt
AI代码解释
复制
TabError Tab和空格混合使用
代码语言:txt
AI代码解释
复制
SystemError Python编译器系统错误
代码语言:txt
AI代码解释
复制
SystemExit Python编译器进程被关闭
代码语言:txt
AI代码解释
复制
TypeError 不同类型间的无效操作
代码语言:txt
AI代码解释
复制
UnboundLocalError 访问一个未初始化的本地变量(NameError的子类)
代码语言:txt
AI代码解释
复制
UnicodeError Unicode相关的错误(ValueError的子类)
代码语言:txt
AI代码解释
复制
UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类)
代码语言:txt
AI代码解释
复制
UnicodeDecodeError Unicode解码时的错误(UnicodeError的子类)
代码语言:txt
AI代码解释
复制
UserWarning 用户代码生成的警告
代码语言:txt
AI代码解释
复制
ValueError 传入无效的参数
代码语言:txt
AI代码解释
复制
ZeroDivisionError 除数为零
代码语言:txt
AI代码解释
复制
l = [1,2,3,4,5]
# 除零错误
num = int(input("Please input your num: "))
print(100/num)
代码语言:txt
AI代码解释
复制
Please input your num: 0
代码语言:txt
AI代码解释
复制
---------------------------------------------------------------------------
代码语言:txt
AI代码解释
复制
ZeroDivisionError                         Traceback (most recent call last)
代码语言:txt
AI代码解释
复制
<ipython-input-1-8abb196ce2aa> in <module>
代码语言:txt
AI代码解释
复制
      2 # 除零错误
代码语言:txt
AI代码解释
复制
      3 num = int(input("Please input your num: "))
代码语言:txt
AI代码解释
复制
----> 4 print(100/num)
代码语言:txt
AI代码解释
复制
ZeroDivisionError: division by zero

异常处理

  • 不能保证程序永远正确运行
  • 但是,必须保证程序在最坏的情况下得到的问题被妥善管理
  • python的异常处理模块全部语法为:
代码语言:txt
AI代码解释
复制
    try:
代码语言:txt
AI代码解释
复制
        尝试实现某个操作,
代码语言:txt
AI代码解释
复制
        如果没有出现异常,任务就可以完成
代码语言:txt
AI代码解释
复制
        如果出现异常,将异常从当前代码块扔出去尝试解决异常
代码语言:txt
AI代码解释
复制
    except 异常类型1:
代码语言:txt
AI代码解释
复制
        解决方案1:用于尝试在此处处理异常解决问题
代码语言:txt
AI代码解释
复制
    except 异常类型2:
代码语言:txt
AI代码解释
复制
        解决方案2:用于尝试在此处处理异常解决问题
代码语言:txt
AI代码解释
复制
    except (异常类型1,异常类型2...):
代码语言:txt
AI代码解释
复制
        解决方案:针对多个异常使用相同的处理方式
代码语言:txt
AI代码解释
复制
    except:
代码语言:txt
AI代码解释
复制
        如果没有出现任何异常,将会执行此处代码
代码语言:txt
AI代码解释
复制
    finally:
代码语言:txt
AI代码解释
复制
        有没有异常都要执行的代码
  • 流程
    1. 执行try下面的语句
    2. 如果出现异常,则在except语句里查找对应异常病进行处理
    3. 如果没有出现异常,则执行else语句内容
    4. 最后,不管是否出现异常,都要执行finally语句
  • 除except(最少一个)以外,else和finally可选
代码语言:txt
AI代码解释
复制
# 简单异常案例
try:
    num = int(input("Please input your number:"))
    rst = 100/num
    print("计算结果是:{}".format(rst))
except:
    print("输入错误")
    # exit是退出程序的意思
    exit()
代码语言:txt
AI代码解释
复制
Please input your number:0
代码语言:txt
AI代码解释
复制
输入错误
代码语言:txt
AI代码解释
复制
# 简单异常案例
# 给出提示信息
try:
    num = int(input("Please input your number:"))
    rst = 100/num
    print("计算结果是:{}".format(rst))
# 捕获异常后,把异常实例化,出错信息会在实例里
# 注意以下写法
# 以下语句是捕获ZeroDivisionError异常并实例化实例e
except ZeroDivisionError as e:
    print("输入错误")
    print(e)
    # exit是退出程序的意思
    exit()
代码语言:txt
AI代码解释
复制
# 简单异常案例
# 给出提示信息
try:
    num = int(input("Please input your number:"))
    rst = 100/num
    print("计算结果是:{}".format(rst))
# 如果是多种error的情况
# 需要把越具体的错误,越往前放
# 在异常类继承关系中,越是子类的异常,越要往前放,
# 越是父类的异常,越要往后放 、

# 在处理异常的时候,一旦拦截到某一个异常,则不再继续往下查看,直接进行下一个
# 代码,即有finally则执行finally语句,否贼就执行下一个大的语句
except ZeroDivisionError as e:
    print("输入错误")
    print(e)
    # exit是退出程序的意思
    exit()
except NameError as e:
    print("名字起错了")
    print(e)

except AttributeError as e:
    print("属性错误")
    print(e)
    exit()
# 常见错误的基类
# 如果写下面这句话,常见异常都会拦截住
# 而且下面这句话一定是最后一个excepttion
except Exception as e:
    print("我也不知道就出错了")
    print(e)

except ValueError as e:
    print("NO>>>>>>>>>>>")
print("hahaha")
代码语言:txt
AI代码解释
复制
Please input your number:ffff
代码语言:txt
AI代码解释
复制
我也不知道就出错了
代码语言:txt
AI代码解释
复制
invalid literal for int() with base 10: 'ffff'
代码语言:txt
AI代码解释
复制
hahaha

用户手动引发异常

  • 当某些情况,用户希望自己引发一个异常的时候,可以使用
  • raise 关键字来引发异常
代码语言:txt
AI代码解释
复制
# raise 案例
try:
    print("I love you")
    print(3.1415926)
    # 手动引发一个异常
    # 注意语法:raise ErrorClassName
    raise ValueError
    print("还没完呀")
except NameError as e:
    print("NameError")
except ValueError as e:
    print("ValueError")
except Exception as e:
    print("有异常")
finally:
    print("我肯定会被执行的")
代码语言:txt
AI代码解释
复制
I love you
代码语言:txt
AI代码解释
复制
3.1415926
代码语言:txt
AI代码解释
复制
ValueError
代码语言:txt
AI代码解释
复制
我肯定会被执行的
代码语言:txt
AI代码解释
复制
# raise 案例-2
# 自定义异常
# 需要注意:自定义异常必须是系统异常的子类
class DanaValueError(ValueError):
    pass

try:
    print("I love you")
    print(3.1415926)
    # 手动引发一个异常
    # 注意语法:raise ErrorClassName
    raise DanaValueError
    print("还没完呀")
except NameError as e:
    print("NameError")
# except DanaValueError as e:
#    print("DanaError")
except ValueError as e:
    print("ValueError")
except Exception as e:
    print("有异常")
finally:
    print("我肯定会被执行的")
代码语言:txt
AI代码解释
复制
I love you
代码语言:txt
AI代码解释
复制
3.1415926
代码语言:txt
AI代码解释
复制
ValueError
代码语言:txt
AI代码解释
复制
我肯定会被执行的
代码语言:txt
AI代码解释
复制
# else语句案例

try:
    num = int(input("Please input your number:"))
    rst = 100/num
    print("计算结果是:{}".format(rst))
except Exception as e:
    print("Exceptiong")  
    
else:
    print("No Exception")
finally:
    print("反正我会被执行")
代码语言:txt
AI代码解释
复制
Please input your number:0
代码语言:txt
AI代码解释
复制
Exceptiong
代码语言:txt
AI代码解释
复制
反正我会被执行

关于自定义异常

  • 只要是raise异常,则推荐自定义异常
  • 在自定义异常的时候,一般包含以下内容:
    • 自定义发生异常的异常代码
    • 自定义发生异常后的问题提示
    • 自定义发生异常的行数
  • 最终的目的是,一旦发生异常,方便程序员快速定位错误现场

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 异常处理机制
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 异常处理机制 ---- Python 异常处理机制 1.try-except 语句 2.异常类型 3.raise 抛出异常 4.自定义异常 ---- 1.try-except 语句 Python解释器在运行出现异常时,会返回异常信息,告诉我们错误出现在哪一行,错误类型是什么,具体原因是什么。
小嗷犬
2022/11/15
6330
【Python3之异常处理】 转
程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)
双面人
2019/04/10
1.3K0
【Python3之异常处理】
                                                                            转
Python3 | 练气期,捕获错误异常 、自定义异常处理!
在我们开始学习 Python 编程语言的时候, 我们经常会遇到各种错误, 比如:语法错误,运行时错误,逻辑错误等等, 这些错误在开发学习中是不可避免的, 但是随着我们学习的深入可以发现 Python 可以很好的处理这些错误, 并且在正式业务的开发环境中往往都是需要想到不同的报错场景, 然后编写对应的异常处理机制, 下面我们就一起来学习下 Python 中如何进行错误与异常处理,以及如何自定义一个异常类。
全栈工程师修炼指南
2024/07/29
1330
Python3 | 练气期,捕获错误异常 、自定义异常处理!
关于Python异常处理,你需要了解的知识点
当Python检测到一个错误时,解释器就无法继续执行了,并且给出一个错误提示。比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然中断。这时候,就需要捕获处理它,否则程序会终止执行。
吾非同
2020/10/26
1.4K0
关于Python异常处理,你需要了解的知识点
python基础学习15----异常处理
异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。
py3study
2020/01/19
1.7K0
Python进阶|聊聊异常处理
在编写代码中,总会遇到一些bug和报错,怎么去捕获这些异常,并进行处理,以让程序更健硕了?本篇文章将带你聊聊Python的异常处理。
罗罗攀
2019/09/25
6180
Python进阶|聊聊异常处理
【Python】【天池龙珠计划笔记】Python中的异常处理
异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。
Regan Yue
2021/09/16
8790
【Python】【天池龙珠计划笔记】Python中的异常处理
#21 Python异常
运行程序时经常遇到各种错误,例如:ImportError(导入模块错误)、IndexError(索引错误)、NameError(变量错误)、SyntaxError(语法错误)、IndentationError(缩进错误)等,你或许有许多疑问,为什么程序出现这个错误就会打印出相应的错误信息,自己是否可以编写一个错误呢?这些错误在Python中其实是异常,正确的处理异常会让程序跑起来得心应手,那么怎么来处理异常呢?Here we go!
py3study
2020/01/17
1.1K0
Python 异常处理总结
什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 异常处理: 本站Python教程会具体介绍。 断言(Assertions):本站Python教程会具体介绍。 Python标准
CDA数据分析师
2018/02/05
1.1K0
Python 异常处理总结
Python3 错误和异常
异常处理机制概述: 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。 就好比一个旅游景点,每到一个有可能出现问题情况的地方就会设置一个处理问题的处理点,不同的问题有不同的处理点,例如花粉过敏有花粉过敏的处理点,摔伤有摔伤的处理点等。程序也是如此会出现各种各样的错误,同理不同的异常错误有不同的异常错误处理方法。 各种编程语言在处理异常方面具有非常显著的不同点(错误检测与异常处理区别在于:错误检测是在正常的程序流中,处理不可预见问题的代码,例如一个调用操作未能成功结束)。某些编程语言有这样的函数:当输入存在非法数据时不能被安全地调用,或者返回值不能与异常进行有效的区别。例如,C语言中的atoi函数(ASCII串到整数的转换)在输入非法时可以返回0。在这种情况下编程者需要另外进行错误检测(可能通过某些辅助全局变量如C的errno),或进行输入检验(如通过正则表达式),或者共同使用这两种方法。 在python中我们可以通过try-except语句来捕捉异常,语法错误的话开发工具都会有提示的。
py3study
2020/01/03
9440
Python-异常处理
一、了解异常 ---- 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。 一般情况下,在Python无法正常处理程序时就会发生一 个异常。 异常是Python对象,表示一个错误。 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 二、Python异常分类 ---- 异常名称 描述 BaseException 所有异常的基类 SystemExit 解析器请求退出 Exception 常规错误的基类 StopIteration 迭代器没有更多的值 Arithmeti
Python研究者
2020/09/28
4240
python基础教程:错误处理和异常处理(二)
前面我们讲到的Python编程过程中,在可能出现异常的地方使用尝试语句,来正确的处理一些异常,可以保证程序不中断继续运行。
一墨编程学习
2019/05/17
9150
python基础教程:错误处理和异常处理(二)
python异常处理
作为一个码农, 每天都在写代码, 不可避免的会出现错误, 也有一些时候, 知道可能会出现错误, 必须要在代码中处理, 以免影响代码正常流程, 这篇讲一下常见的异常错误, 以及如何处理异常
不止于python
2023/09/05
1790
python异常处理
Python 编程 | 连载 18 - 异常处理
错误代码后面的代码无论正确与否一旦出现异常,程序就会终止,这个时候就需要对这段可能会出错的代码进行异常处理,确保程序能正常运行。
RiemannHypothesis
2022/09/26
6280
Python 编程 | 连载 18 - 异常处理
Python 异常处理
python标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError 所有数值计算错误的基类 FloatingPointError 浮点计算错误 O
张树臣
2018/05/15
1.1K0
Python 基础(十四):错误和异常
程序中的错误我们通常称为 bug ,工作中我们不仅需要改自己程序中的 bug ,还需要改别人程序中的 bug ,新项目有 bug 要改,老项目也有 bug 要改,可以说 bug 几乎贯穿一个程序员的职业生涯... 我们通常将 bug 分为 Error(错误) 和 Exception(异常),我们下面来具体学习下 Python 中的 错误 和 异常。
Python小二
2020/08/18
1.4K0
Python 异常处理与反射机制
软件异常(Exception),是指当程序出现错误后程序的处理方法,异常机制提供了程序正常退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器,如序列的下标越界、打开不存在的文件、空引用异常等,当异常被引发时,如果没有代码处理该异常,异常将被 Python 接收处理,当异常发生时 Python 解释器将输出一些相关的信息井终止程序的运行,以确保程序不会出现终止执行的情况.
王瑞MVP
2022/12/28
5480
11 . Python3之异常,调试和测试
1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正)
iginkgo18
2020/09/27
1.4K0
11 . Python3之异常,调试和测试
Python3 常见错误和异常处理
即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行检测到的错误被称为异常。
python鱼霸霸
2020/04/23
1.5K0
Python自动化运维之异常处理
1、异常 异常就是非正常状态,在Python中使用异常对象来表示异常。若程序在编译或运行过程中发生错误,程序的执行过程就会发生改变,抛出异常对象,程序流进入异常处理。如果异常对象没有被处理或捕捉,程序就会执行回溯(Traceback)来终止程序。 2、异常类型 通用异常类型表
py3study
2020/01/06
1.1K0
相关推荐
Python 异常处理机制
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文