1. 什么是异常

异常:代码完全正确,但在程序运行过程中会报出的错误 exception/error
异常特点:当程序在执行的过程中遇到异常,程序将会终止在出现异常的代码处,代码不会继续向下执行

2. 常见的异常

异常名 解释
NameError 变量未被定义
TypeError 类型错误
IndexError 索引异常
keyError 使用字典中不存在的key产生的异常
ValueError 方法接收正确数据类型但值不合适的参数时产生的异常
AttributeError 属性异常
ImportError 导入模块时路径异常
SyntaxError 代码不能编译
UnboundLocalError 试图访问一个还未被设置的局部变量

例:数组越界引发异常报错

3. 异常处理方式

解决方案:越过异常,保证后面的代码继续执行【实质:将异常暂时屏蔽起来,目的是为了让后面的代码的执行不受影响】

(1)捕获异常

  1. try-except-else

语法:

​ try:
​ 可能存在异常的代码
​ except 错误表示码 as 变量:
​ 语句1
​ except 错误表示码 as 变量:
​ 语句2
······
​ else:
​ 语句n

说明:

① try-except-else的用法类似于if-elif-else
​ ② else可有可无,根据具体的需求决定
​ ③ try后面的代码块被称为监测区域【检测其中的代码是否存在异常】
​ ④ 工作原理:首先执行try中的语句,如果try中的语句没有异常,则直接跳过所有的except语句,执行else;如果try中的语句有异常,则去except分支中进行匹配错误码,如果匹配到了,则执行except后面的语句;如果没有except匹配,则异常仍然没有被拦截【屏蔽】

举例:

#一、try-except-else的使用#1.except带有异常类型
try:print(10 / 0)
except ZeroDivisionError as e:print("被除数不能为0",e)print("~~~~")
"""
总结:
a.try-except屏蔽了异常,保证后面的代码可以正常执行
b.except ZeroDivisionError as e相当于声明了一个ZeroDivisionError类型的变量【对象】,变量e中携带了错误的信息
"""#2.try后面的except语句可以有多个
class Person(object):__slots__ = ("name")
try:p = Person()p.age = 19print(10 / 0)
except AttributeError as e:print("属性异常",e)
except ZeroDivisionError as e:print("被除数不能为0",e)print("over")"""
总结:
a.一个try语句后面可以有多个except分支
b.不管try中的代码有多少个异常,except语句都只会被执行其中的一个,哪个异常处于try语句的前面,则先先执行对应的except语句
c.后面的异常不会报错【未被执行到】
"""#3.except语句的后面可以不跟异常类型
try:print(10 / 0)
except:print("被除数不能为0")#4.一个except语句的后面可以跟多种异常的类型
#注意:不同的异常类型使用元组表示
try:print(10 / 0)
except (ZeroDivisionError,AttributeError):print("出现了异常")#5.else分支
try:print(10 / 4)
except ZeroDivisionError as e:print("出现了异常",e)
else:print("hello")"""
总结:
a.如果try中的代码出现了 异常,则直接去匹配except,else分支不会被执行
b.如果try中的代码没有出现异常,则try中的代码正常执行,except不会被执行,else分支才会被执行
"""#6.try中不仅可以直接处理异常,还可以处理一个函数中的异常
def show():x = 1 / 0try:show()
except:print("出现了异常")#7.直接使用BaseException代替所有的异常
try:y = 10 / 0
except BaseException as e:print(e)"""
总结:在Python中,所有的异常其实都是类,他们都有一个共同的父类BaseException,可以使用BaseException将所有异常“一网打尽”
"""
  1. try-except-finally

语法:

try:
​ 可能存在异常的代码
​ except 错误表示码 as 变量:
​ 语句1
​ except 错误表示码 as 变量:
​ 语句2
​ ······
​ finally:
​ 语句n

说明:不管try中的语句是否存在异常,不管异常是否匹配到了except语句,finally语句都会被执行

作用:表示定义清理行为,表示无论什么情况下都需要进行的操作

举例:

#二、try-except-finally的使用#1.
try:print(10 / 5)
except ZeroDivisionError as e:print(e)finally:print("finally被执行")#2.特殊情况
#注意:当在try或者except中出现return语句时,finally语句仍然会被执行
def show():try:print(10 / 0)returnexcept ZeroDivisionError as e:print(e)finally:print("finally被执行~~~~")show()

(2)抛出异常

  1. raise
    raise抛出一个指定的异常对象
    语法:raise 异常对象 或者 raise
    说明:异常对象通过错误表示码创建,一般来说错误表示码越准确越好

举例:

 e = Exception("Time ERROR")raise e
#raise的使用主要体现在自定义异常中#1.raise表示直接抛出一个异常对象【异常是肯定存在的】
#创建对象的时候,参数表示对异常信息的描述
try:raise NameError("hjafhfja")
except NameError as e:print(e)print("over")"""
总结:
通过raise抛出的异常,最终还是需要通过try-except处理
"""#2.如果通过raise抛出的异常在try中不想被处理,则可以通过raise直接向上抛出
try:raise NameError("hjafhfja")
except NameError as e:print(e)raise
  1. assert断言
    对某个问题做一个预测,如果预测成功,则获取结果;如果预测失败,则打印预测的信息
    语法:assert表达式,当出现异常时的信息描述
def func(num,divNum):#assert关键字的作用:预测表达式是否成立,如果成立,则执行后面的代码;如果不成立,则将异常的描述信息打印出来assert (divNum != 0),"被除数不能为0"return  num / divNumprint(func(10,20))
print(func(10,0))

python 常见异常与处理相关推荐

  1. 初学Python常见异常错误,总有一处你会遇到!

    初学Python常见异常错误,总有一处你会遇到! 参考文章: (1)初学Python常见异常错误,总有一处你会遇到! (2)https://www.cnblogs.com/xxpythonxx/p/1 ...

  2. Python常见异常及简单处理

    目录 常见异常类型 AttributeError NameError SyntaxError KeyError IndexError IndentationError TypeError ZeroDi ...

  3. python常见异常以及处理方法

    一.常见的异常 1.NameError 未定义变量异常 print(a) # 输出:NameError: name 'a' is not defined 2.IndexError 下标越界异常 lis ...

  4. python常见异常

    异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 ...

  5. python常见异常及解决方法

    异常1: ValueError: unsupported hash type sha224 ERROR:root:code for hash sha256 was not found. Traceba ...

  6. [转载] python3基础:异常处理及python常见异常类型总结

    参考链接: Python | 异常处理 1.try...except... #!/usr/bin/env python # coding=utf-8 import codecs def get_web ...

  7. python常见的异常类有哪些_Python常见异常类型

    标签:常见   nic   警告   werror   pytho   无效   本地变量   计算   point BaseException                         所有异 ...

  8. python场景异常_python-异常

    try-except代码块 ZeroDivisionError是一个异常对象,python无法按你的要求做时就会创建这个对象. 场景1 场景2 try:print 5/0exceptZeroDivis ...

  9. python常见错误-Python错误及异常总结汇总

    程序员的一生中,错误几乎每天都在发生.在过去的一个时期, 错误要么对程序(可能还有机器)是致命的,要么产生一大堆无意义的输出,无法被其他计算机或程序识别,连程序员自己也可能搞不懂它的意义.一旦出现错误 ...

最新文章

  1. linux:关于Linux系统中 CPU Memory IO Network的性能监测
  2. 百度为AI开发者打造别样的深度学习快速通关路径
  3. 读一个文件的java程序_java 读文件的几种方法(一)
  4. 0x01.基本算法 — 位运算
  5. MySQL数据库-操作基础
  6. 启明云端分享|SSD20X_烧录mac地址文档参考
  7. 【报错笔记】做struts项目建立jsp文件老是报错
  8. Android JNI编程(五)——C语言的静态内存分配、动态内存分配、动态创建数组...
  9. 数论 —— 素性测试
  10. python界面编程pdf_Python Qt GUI快速编程——PyQt编程指南 中文pdf完整版[99MB]
  11. 业界首款!小米10至尊纪念版将有屏下摄像头版本
  12. React Native 入门第一篇
  13. 2022年信息安全工程师考试知识点:计算机网络基本知识
  14. java上传文件夹文件
  15. 浩辰cad2017破解版|浩辰电气cad2017无限使用破解版下载
  16. tilemap 菱形_Tilemap
  17. 24部经典电影的24句话
  18. npm login报错:npm notice Beginning October 4, 2021, all connections to the npm registry.......
  19. 一个本科渣渣是怎么逆袭从咸鱼到Offer收割机的?绝对干货
  20. 分析器错误消息: 该配置节不能包含 CDATA 或文本元素。

热门文章

  1. Linux(九):vim跳转到某一行
  2. 将VOC2012转换为tfrecord
  3. foreach 循环获取索引
  4. 挑灯夜读——Java(二):面向对象
  5. 在Unity3D中利用描点法画圆
  6. onlyoffice文件服务器安装,使用ONLYOFFICE文档服务器在Debian和Ubuntu上安装在线编辑器...
  7. Burp Suite-第二章 Burp Suite代理和浏览器设置
  8. 模型选择、欠拟合和过拟合
  9. IDEA maven项目中刷新依赖的两种方法
  10. 云端还是本地,数据放哪儿更安全之泄密事件篇