初识python: 异常处理
异常处理基本语法:
try:
pass
except Exception,ex:
pass
常用异常种类:
AttributeError 试图访问一个对象,没有的属性。比如foo.x,但是foo没有属性x
IOError 输入/输出异常(基本上是无法打开文件)
ImportError 无法引入模块或包(基本上是路径问题或名称错误)
IndentationError 语法错误的一种,代码缩进不对
IndexError 下标索引超出序列边界,比如当一个列表x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个尚未定义的变量
SyntaxError Python代码非法,代码不能编译
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即便值的类型是正确的。比如,你要将一个字符串转换成数字:n='abc' int(n)
单个异常抓取:
data = {'id':123}
try:
data['name']
except KeyError as e:
print('没有这个key:',e)
多个异常抓取:
这种方法如果第一个错了,就不会执行后面的异常处理。
data = {'id':123}
list = [1,2]
# 只会处理 KeyError ,后面的IndexError不会处理。
try:
data['name']
list[3]
except KeyError as e :
print('没有这个key:',e)
except IndexError as e :
print('列表操作错误:',e)
多个指定异常,返回同一个结果:
# 多个指定异常,返回同一个结果。
# 只要出现了其中任意一个就会返回。
data = {'id':123}
list = [1,2]
try:
data['name']
list[3]
except (IndexError,KeyError) as e: # 出现指定的错误时,执行。
print('出现了指定错误。')
万能异常:
不管出现什么错误,都能获取。不建议一开始就是用。
data = {'id':123}
list = [1,2]
try:
data['name']
list[3]
except Exception as e: # 抓取任意异常
print('出现了错误。')
其他异常结构:
except Exception 出现非指定错误时,执行。
else 没有错误时,执行
finally 不管有没有错,都执行。
data = {'id':123}
list = [1,2]
try:
# data['name']
list['abc']
n = 1
except (IndexError,KeyError) as e: # 出现指定的错误时,执行。
print('出现了指定错误。')
except Exception as e: # 出现非指定错误时,执行。
print('出现了非指定错误!未知错误',e)
else: # 没有错误时,执行。
print('一切正常,没有错误。')
finally: # 不管有没有错,都执行。
print('不管有没有错,都执行这个!')
主动触发异常:
try:
raise Exception('主动触发了异常!')
except Exception as e:
print(e)
自定义异常:
class MyExceptin(Exception):
def __init__(self, msg):
self.msg = msg try:
raise MyExceptin('自定义异常!')
except MyExceptin as e:
print(e)
初识python: 异常处理的更多相关文章
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- Python开发【第一篇】:初识Python
初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- Python开发【第二篇】:初识Python
Python开发[第二篇]:初识Python Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...
- python异常处理(基础)
之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...
- 初识python面向对象
一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...
- Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏
一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...
- Python 异常处理--raise函数用法
raise语句手工引发一个异常: "raise" [expression ["," expression ["," expression]] ...
- [Python学习笔记][第八章Python异常处理结构与程序调试]
1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...
- python异常处理try,except,else,finally,raise
先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...
- 篇2 安卓app自动化测试-初识python调用appium
篇2 安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...
随机推荐
- 【笔记】草履虫也能看懂的ELK搭建流程
环境需要 Elasticsearch需要JAVA环境,至少是JDK1.8 elasticsearch 不允许root用户使用,需要新增个elk用户 如果觉得官网下载太慢,可以使用这个 https:// ...
- Mybatis中原生DAO实现和Mapper动态代理实现
Mybatis开发dao的方法通常用两种,一种是传统DAO的方法,另一种是基于mapper代理的方法. 一.传统DAO方式开发 1.sql语句映射文件编写 User.xml <?xml vers ...
- [BUUCTF]REVERSE——[MRCTF2020]Xor
[MRCTF2020]Xor 附件 步骤: 例行检查,32位程序,无壳 32位ida载入,首先检索程序里的字符串,根据字符串的提示,跳转到程序的关键函数 根据flag,跳转到sub_401090函数 ...
- CSS中上下margin的传递和折叠
CSS中上下margin的传递和折叠 1.上下margin传递 1.1.margin-top传递 为什么会产生上边距传递? 块级元素的顶部线和父元素的顶部线重叠,那么这个块级元素的margin-top ...
- Jaeger知识点补充
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- java 编程基础 反射方式获取泛型的类型Fileld.getGenericType() 或Method.getGenericParameterTypes(); (ParameterizedType) ;getActualTypeArguments()
引言 自从JDK5以后,Java Class类增加了泛型功能,从而允许使用泛型来限制Class类,例如,String.class的类型实际上是 Class 如果 Class 对应的类暂时未知,则使 C ...
- java 常用类库:Object类和Objects类
1,Object类: Object类是所有的类,数组,枚举的父类,也就是说,JAVA中允许把任何的对象赋值给Object类(包括基础数据类型),当定义一个类的时候,没有使用extends关键字显示指定 ...
- cmake之if
note if 要 与endif配对使用 语法含义 表达式 含义 if (not expression) 与 expression相反 if (var1 AND var2) var1与var2都为真时 ...
- 【LeetCode】117. Populating Next Right Pointers in Each Node II 解题报告(Python)
[LeetCode]117. Populating Next Right Pointers in Each Node II 解题报告(Python) 标签: LeetCode 题目地址:https:/ ...
- light oj 1100 - Again Array Queries(暴力,鸽巢原理)
http://lightoj.com/volume_showproblem.php?problem=1100 刚一看到这题,要询问这么多次,线段树吧,想多了哈哈,根本没法用线段树做. 然后看看数据范围 ...