异常处理基本语法:

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: 异常处理的更多相关文章

  1. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  2. Python开发【第一篇】:初识Python

    初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...

  3. Python开发【第二篇】:初识Python

    Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...

  4. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  5. 初识python面向对象

    一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...

  6. Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏

    一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...

  7. Python 异常处理--raise函数用法

    raise语句手工引发一个异常: "raise" [expression ["," expression ["," expression]] ...

  8. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...

  9. python异常处理try,except,else,finally,raise

    先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...

  10. 篇2 安卓app自动化测试-初识python调用appium

    篇2              安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...

随机推荐

  1. 【笔记】草履虫也能看懂的ELK搭建流程

    环境需要 Elasticsearch需要JAVA环境,至少是JDK1.8 elasticsearch 不允许root用户使用,需要新增个elk用户 如果觉得官网下载太慢,可以使用这个 https:// ...

  2. Mybatis中原生DAO实现和Mapper动态代理实现

    Mybatis开发dao的方法通常用两种,一种是传统DAO的方法,另一种是基于mapper代理的方法. 一.传统DAO方式开发 1.sql语句映射文件编写 User.xml <?xml vers ...

  3. [BUUCTF]REVERSE——[MRCTF2020]Xor

    [MRCTF2020]Xor 附件 步骤: 例行检查,32位程序,无壳 32位ida载入,首先检索程序里的字符串,根据字符串的提示,跳转到程序的关键函数 根据flag,跳转到sub_401090函数 ...

  4. CSS中上下margin的传递和折叠

    CSS中上下margin的传递和折叠 1.上下margin传递 1.1.margin-top传递 为什么会产生上边距传递? 块级元素的顶部线和父元素的顶部线重叠,那么这个块级元素的margin-top ...

  5. Jaeger知识点补充

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. java 编程基础 反射方式获取泛型的类型Fileld.getGenericType() 或Method.getGenericParameterTypes(); (ParameterizedType) ;getActualTypeArguments()

    引言 自从JDK5以后,Java Class类增加了泛型功能,从而允许使用泛型来限制Class类,例如,String.class的类型实际上是 Class 如果 Class 对应的类暂时未知,则使 C ...

  7. java 常用类库:Object类和Objects类

    1,Object类: Object类是所有的类,数组,枚举的父类,也就是说,JAVA中允许把任何的对象赋值给Object类(包括基础数据类型),当定义一个类的时候,没有使用extends关键字显示指定 ...

  8. cmake之if

    note if 要 与endif配对使用 语法含义 表达式 含义 if (not expression) 与 expression相反 if (var1 AND var2) var1与var2都为真时 ...

  9. 【LeetCode】117. Populating Next Right Pointers in Each Node II 解题报告(Python)

    [LeetCode]117. Populating Next Right Pointers in Each Node II 解题报告(Python) 标签: LeetCode 题目地址:https:/ ...

  10. light oj 1100 - Again Array Queries(暴力,鸽巢原理)

    http://lightoj.com/volume_showproblem.php?problem=1100 刚一看到这题,要询问这么多次,线段树吧,想多了哈哈,根本没法用线段树做. 然后看看数据范围 ...