当前位置: 首页 > news >正文

python异常处理

异常处理

程序错误分为两种:语法错误 和 异常错误
语法错误:代码没有按照python规定语法去写,发明创造产生的错误
异常错误:在代码语法正确的前提下,程序报错就是异常

基础语法:try...except...

主动抛异常,自定义异常:raise 

基本异常语法

try:
    listvar = [1,2,3]
    print(listvar)
except:
    print("error")

 

多分支异常处理

try:
    listvar = [1,2,3]
    print(listvar[6])
    print(name)
    dictvar = {}
    print(dictvar["a"])
except IndexError:
    print("IndexError")
except NameError:
    print("NameError")
except KeyError:
    print("KeyError")
except:
    print("Error")

 

迭代器/生成器异常错误

def mygen():
    for i in range(5):
        yield i
try:
    gen = mygen()
    for i in gen:
        print(i)
    res = next(gen) 
    print(res)
except StopIteration:
    print("下标越界")

 

try...except...else 如果出现异常就不执行else

try:
    lst = [1,2,3]
except:
    print("Error1")
else:
    print("run...")

 

try...finally 无论是否出现异常都执行finally 

try:
    listvar = [1,2,3]
    print(listvar[6])
finally:
    print(1111)

 

 

异常的分类

IndexError 索引超出序列的范围
KeyError 字典中查找一个不存在的关键字
NameError 尝试访问一个不存在的变量
IndentationError 缩进错误
AttributeError 尝试访问未知的对象属性
StopIteration 迭代器没有更多的值
AssertionError 断言语句(assert)失败
EOFError 用户输入文件末尾标志EOF(Ctrl+d)
FloatingPointError 浮点计算错误
GeneratorExit generator.close()方法被调用的时候
ImportError 导入模块失败的时候
KeyboardInterrupt 用户输入中断键(Ctrl+c)
MemoryError 内存溢出(可通过删除对象释放内存)
NotImplementedError 尚未实现的方法
OSError 操作系统产生的异常(例如打开一个不存在的文件)
OverflowError 数值运算超出最大限制
ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
RuntimeError 一般的运行时错误
SyntaxError Python的语法错误
TabError Tab和空格混合使用
SystemError Python编译器系统错误
SystemExit Python编译器进程被关闭
TypeError 不同类型间的无效操作
UnboundLocalError 访问一个未初始化的本地变量(NameError的子类)
UnicodeError Unicode相关的错误(ValueError的子类)
UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类)
UnicodeDecodeError Unicode解码时的错误(UnicodeError的子类)
UnicodeTranslateError Unicode转换时的错误(UnicodeError的子类)
ValueError 传入无效的参数
ZeroDivisionError 除数为零

转载于:https://www.cnblogs.com/wangzihong/p/11332368.html

相关文章:

  • 极客时间-左耳听风-程序员攻略-UI/UX设计
  • 贪心训练题
  • idea新建maven项目后生成web.xml方法和添加到tomcat方法
  • db mysql / mysql cluster 5.7.19 / reboot / devops
  • JAVA:用户从键盘只能输入整数,程序输出这些整数的乘积。
  • liquibase使用教程
  • Python netaddr CIDR转换
  • 定制化扫描工具
  • 内网远程溢出漏洞利用
  • github proxy
  • D-Link系列路由器漏洞挖掘
  • 区块链漏洞平台的漏洞信息
  • AttributeError: module 'subprocess' has no attribute 'mswindows'
  • ajax 并发问题
  • ViewModel 凭什么能保存重建数据
  • php的引用
  • hexo+github搭建个人博客
  • .pyc 想到的一些问题
  • 【Leetcode】104. 二叉树的最大深度
  • 【RocksDB】TransactionDB源码分析
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Asm.js的简单介绍
  • IDEA 插件开发入门教程
  • Java多线程(4):使用线程池执行定时任务
  • js面向对象
  • JS题目及答案整理
  • mysql innodb 索引使用指南
  • 编写高质量JavaScript代码之并发
  • 初探 Vue 生命周期和钩子函数
  • 从0实现一个tiny react(三)生命周期
  • 从输入URL到页面加载发生了什么
  • 区块链共识机制优缺点对比都是什么
  • 网络应用优化——时延与带宽
  • 移动端 h5开发相关内容总结(三)
  • const的用法,特别是用在函数前面与后面的区别
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (java)关于Thread的挂起和恢复
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (zhuan) 一些RL的文献(及笔记)
  • (二十四)Flask之flask-session组件
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (理论篇)httpmoudle和httphandler一览
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (新)网络工程师考点串讲与真题详解
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • *** 2003
  • ..回顾17,展望18
  • ./configure,make,make install的作用(转)
  • .htaccess配置常用技巧
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • :=
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname