Python修炼之路-异常
异常处理
在程序出现bug时一般不会将错误信息直接显示给用户,而是可以自定义显示内容或处理。
常见异常
AttributeError # 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError # 输入/输出异常;基本上是无法打开文件
ImportError # 无法引入模块或包;基本上是路径问题或名称错误
IndentationError # 语法错误(的子类) ;代码没有正确对齐
IndexError # 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError # 试图访问字典里不存在的键
KeyboardInterrupt # Ctrl+C被按下
NameError # 使用一个还未被赋予对象的变量
SyntaxError # Python代码非法,代码不能编译
TypeError # 传入对象类型与要求的不符合
UnboundLocalError # 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError # 传入一个调用者不期望的值,即使值的类型是正确的
更多异常
ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError
更多异常
实例
IndexError
list = ["a", 'b',1]
try:
list[10]
except IndexError as e:
print('out of range')
# out of range
KeyError
# -*-coding:utf-8 -*-
dic = {'k1':'v1'}
try:
dic['k2']
except KeyError as e:
print('no key: %s'%e)
# no key: 'k2'
ValueError
s1 = 'hello'
try:
int(s1)
except ValueError as e:
print('%s not int'%e)
# invalid literal for int() with base 10: 'hello' not int
捕获异常
异常类只能用来处理指定的异常情况,如果非指定异常则无法处理,捕获异常的方式:
- try: ... except Error as e:
- try: ... except Error1 as e: ... except Error2 as e: ... ...
- try: ... except Exception as e: ...
- try: ... except Error as e: else: ... finally: ... 若无异常捕获,主代码后执行else;无论是否有异常,finally都会在最后执行
s1 = 'hello'
try:
int(s1) # 同时监测多个异常
except IndexError as e:
print('%s index out of range'%e)
except KeyError as e:
print('no key %s'% e)
except ValueError as e:
print("vlaue error: %s" %e) # 万能异常,如果存在异常,前面没有捕获到,则Exception处理
# 注:并不是所有的异常都能捕获的
except Exception as e:
print("error") # 如果没有异常,主代码执行完执行else后面的代码
else:
print("run ok") # 无论是否有异常,finally后面的代码都会在最后执行
finally:
print("run over")
#
# vlaue error: invalid literal for int() with base 10: 'hello'
# run over
Python修炼之路-异常的更多相关文章
- Python修炼之路-文件操作
Python编程之文件操作 文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 每次文件打开.读取信息时,Python自动记录所达到的位置,好比一个书签,之后每一次 ...
- Python修炼之路-装饰器、生成器、迭代器
装饰器 本质:是函数,用来装饰其他函数,也就是为其他函数添加附加功能. 使用情景 1.不能修改被装饰的函数的源代码: 2.不能修改被装饰的函数的调用方式. 在这两种条件下,为函数添加附加 ...
- python修炼之路——控制语句
Python编程之print python2.x和python3.x的print函数区别:python3.x的print函数需要加括号(),python2.x可以不加. #-*- coding:utf ...
- Python修炼之路-数据类型
Python编程之列表 列表是一个使用一对中括号"[ ]" 括起来的有序的集合,可以通过索引访问列表元素,也可以增加和删除元素. 列表的索引:第一个元素索引为0,最后一个元素索 ...
- Python修炼之路-函数
Python编程之函数 程序的三种方式 面向对象:类------->class 面向过程:过程------>def 函数式编程:函数------>def 定义函数 函数:逻辑结构化与 ...
- Python修炼之路-模块
模块 模块与包 模块:用来从逻辑上组织python代码(可以定义变量.函数.类.逻辑:实现一个功能),本质就是.py结尾的python文件. 例如,文件名:test.py,对应的模块名为:test 包 ...
- python修炼之路---面向对象
面向对象编程 面向对象编程:使用类和对象实现一类功能. 类与对象 类:类就是一个模板,模板里可以包含多个函数,函数里实现一些功能. 对象:是根据模板创建的实例,通过实例对象可以执行类中的函数. 面向对 ...
- Python修炼之路-Socket
网络编程 socket套接字 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过“套接字”向网络发出请求或者应答网络请求. socket ...
- Python菜鸟之路:Python基础-类(2)——成员、成员修饰符、异常及其他
三大成员 在Python的面向对象中,主要包括三大成员:字段.方法.属性 字段 类成员的字段又可分为普通字段.静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,代码示例如下: ...
随机推荐
- flutter 添加全局环境变量
flutter安装好了之后 要添加全局环境变量才可以在终端通过flutter命令来操作 安装flutter环境变量 vim ~/.bash_profile (不存在就创建,添加下面一行命令) expo ...
- ControlTemplate in WPF —— Shared in all file
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...
- Thymeleaf 页面表达式基础
转自:http://www.cnblogs.com/vinphy/p/4674247.html#undefined (一)Thymeleaf 是个什么? 简单说, Thymeleaf 是一个 ...
- 阶段3 2.Spring_04.Spring的常用注解_1 今日课程内容介绍
- global和nonlocal的用法
1 nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量.写在内部嵌套函数里面,它实质上是将该变量定义成了全局变量,它等价于用两个global来定义该变量.只不过用两个gl ...
- 部署php程序报错:站点已关闭
场景: 之前把公司线上的php源码包拿到笔记本的虚拟机上测试部署,部署完成后通过浏览器访问总是出现站点已关闭 原因:把线上php程序配置文件config.php里面的数据库连接信息改成了笔记本虚拟机的 ...
- 模糊查询基于select遍历json文件自动填充的实现
HTML页面 <tr> <td align="left"><span>案由</span> <input type=" ...
- Scratch少儿编程系列:(十一)Scratch编程之简单见解
一.Scratch官网的说明 With Scratch, you can program your own interactive stories, games, and animations ...
- switch-case的选择用法
企业发放的奖金根据利润提成.利润I低于或等于100000元的,奖金可提0.1:利润高于100000元,低于200000(100000<I<=200000)时,低于100000元的部分按10 ...
- 【Qt开发】QTextEdit 外观属性设置
一.给QTextEdit添加背景图片,有下面两种方法: QTextEdit* iEdit = new QTextEdit(); 1:使用样式表: iEdit->setStyleSheet(&q ...