python异常类父类_python【第五篇】异常处理
作用
程序遇到异常会退出,处理异常增加程序的健壮性
常见异常
NameError 尝试访问一个没有声明的变量
ImportError 无法引入模块或包;可能路径不存在
IndentationError 语法错误(的子类);代码没有正确对齐
SyntaxError 语法错误
IndexError 索引超出序列范围
KeyError 请求一个不存在的字典关键字
IOError 输入输出错误(比如你要读的文件不存在)
AttributeError 尝试访问未知的对象属性
ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串类型
UnboundLocalError 试图访问一个还未被设置的局部变量
KeyboardInterrupt
语法
异常在try块里抛。
try有异常,执行 except ;try无异常,才会执行elsefinally:无论try块是否抛异常,永远执行的代码,通常用来执行关闭文件,断开服务器连接等功能。
例子
try代码块有错误则执行except代码块
except m,n:m为异常名称,e为变量,异常信息赋值给它
>>> try:
... r=10/0
... print('result is %f' % r)
... except ZeroDivisionError,e:
... print('ZeroDivisionError: %s' %e)
...
ZeroDivisionError: integer division or modulo by zero
一下代码均放在exception.py文件中
一旦捕获到即跳出try代码块,跳到对应的exception语句,except类似于if
try:
r=10/0
print('result: %f' % r)
except ZeroDivisionError, e:
print('%s' % e)
except NameError, e:
print('%s' % e)
print('end')
[root@hy tmp]# python exception.py
integer division or modulo by zero
end
try没有异常则跳到else语句
try:
r=10/0
print('result: %f' % r)
except ZeroDivisionError, e:
print('%s' % e)
except NameError, e:
print('%s' % e)
else:
print('no exceptions')
print('end')
[root@hy tmp]# python exception.py
integer division or modulo by zero
end
try:
r=10/1
print('result: %f' % r)
except ZeroDivisionError, e:
print('%s' % e)
except NameError, e:
print('%s' % e)
else:
print('no exceptions')
print('end')
[root@hy tmp]# python exception.py
result: 10.000000
no exceptions
end
try:
r=10/1
print aaa
print('result: %f' % r)
except ZeroDivisionError, e:
print('%s' % e)
except NameError, e:
print('result: %s' % e)
else:
print('no exceotions')
print('end')
[root@hy tmp]# python exception.py
result: name 'aaa' is not defined
end
无论try有没有捕获到异常,finally语句都会执行
try:
r=10/1
print aaa
print('result: %f' % r)
except ZeroDivisionError, e:
print('%s' % e)
except NameError, e:
print('result: %s' % e)
else:
print('no exceotions')
finally:
print('finally')
print('end')
[root@hy tmp]# python exception.py
result: name 'aaa' is not defined
finally
end
父类异常在前则只执行父类异常
try:
r=10/0
print('result: %f' % r)
except StandardError, e:
print('StandardError')
except ZeroDivisionError, e:
print('%s' % e)
else:
print('no exceotions')
finally:
print('finally')
print('end')
[root@hy tmp]# python exception.py
StandardError
finally
end
try:
r=10/0
print('result: %f' % r)
except ZeroDivisionError, e:
print('%s' % e)
except StandardError, e:
print('StandardError')
else:
print('no exceotions')
finally:
print('finally')
print('end')
[root@hy tmp]# python exception.py
integer division or modulo by zero
finally
end
raise自定义异常
>>> raise NameError('xxx')
Traceback (most recent call last):
File "", line 1, in
NameError: xxx
>>> try:
... raise NameError('xxx')
... except NameError, e:
... print e
...
xxx
>>> import sys
>>> try:
... 10/0
... except:
... res = sys.exc_info()
...
>>> print res
(, ZeroDivisionError('integer division or modulo by zero',), )
class CustomError(Exception):
def __init__(self,ErrorInfo):
super().__init__(self) #初始化父类
self.errorinfo=ErrorInfo
def __str__(self):
return self.errorinfo
if __name__ == '__main__':
try:
raise CustomError('客户异常')
except CustomError as e:
print(e)
class DatabaseException(Exception):
def __init__(self,err='数据库错误'):
Exception.__init__(self,err)
class PreconditionsException(DatabaseException):
def __init__(self,err='PreconditionsErr'):
DatabaseException.__init__(self,err)
def testRaise():
raise PreconditionsException()
try:
testRaise()
except PreconditionsException as e:
print (e)
上下文管理器
作用:简化释放资源时的异常语法
#上下文管理器协议
classSample:def __enter__(self):print("enter")#获取资源
returnselfdef __exit__(self, exc_type, exc_val, exc_tb):#释放资源
print("exit")defdo_something(self):print("doing something")
with Sample() as sample:
sample.do_something()
更简洁的用法
importcontextlib
@contextlib.contextmanagerdeffile_open(file_name):print("file open")yield{}print("file end")
with file_open("bobby.txt") as f_opened:print("file processing")
python异常类父类_python【第五篇】异常处理相关推荐
- python的类包括_Python的类,复杂吗
是菜鸟学python的第38篇原创文章 阅读本文大概需要6分钟 高级语言都有面对对象,Python也不例外,比起c++,java这些传统的语言,Python中的面对对象去掉了很多复杂的东西,理解和使用 ...
- Python之路【第十五篇】:Web框架
Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 7 ...
- python异常怎么处理_python中的异常怎么处理?
Python中的异常怎么处理? 一.异常介绍 print("1---------------------") open("123.txt","r&qu ...
- python的类作用_python——类中的self到底的作用及三个应用场景
class Test(object): def __init__ (self, val1): self.val0 = val1 def fun1(self): print(self.val0) def ...
- python modbus类封装_Python | 面向对象程序设计来了!
当当当,技术小E又来了! 经过前几次的基础贴的培训 相信很多同学对python的基础知识 已经有了一个简单的认识 那么下面我们来讲一讲 python面向对象程序设计. 我们在写程序的时候一般有两种方式 ...
- c++ 标准异常类层次结构_Java入门教程十一(异常处理)
在程序设计和运行的过程中,发生错误是不可避免的.尽管 Java 语言的设计从根本上提供了便于写出整洁.安全代码的方法,并且程序员也尽量地减少错误的产生,但是使程序被迫停止的错误的存在仍然不可避免.为此 ...
- python离群点检测方法分几类_数据分析 第五篇:离群点检测
离群点(outlier)是指和其他观测点偏离非常大的数据点,离群点是异常的数据点,但是不一定是错误的数据点.确定离群点对于数据分析会带来不利的影响,比如,增大错误方差.影响预测和影响正态性. 从散点图 ...
- python释放类对象_Python 基本功: 10. 面对对象-类 Class
虽然 Python 可以写函数式编程,但是本质上是一门面对对象编程语言 (object-oriented programming language),简称 oop.面对对象编程是把代码包装成一个对象 ...
- python子类初始化父类_Python实现子类调用父类的初始化实例
前言 python中进行面向对象编程,当在子类的实例中调用父类的属性时,由于子类的__init__方法重写了父类的__init__方法,如果在子类中这些属性未经过初始化,使用时就会出错. 例如以下的代 ...
- python import 类 继承_python学习之类的继承
面向对象中一个重要的特性就是继承,继承的好处就是提高代码的重用率,减少不必要的代码.继承是父类与子类的关系,当子类继承了父类后,就具有了父类的所有变量和方法.在python中定义继承的语法是:clas ...
最新文章
- DXUT框架剖析(12)
- 简简单单的正则表单验证练习
- 逍遥法外第一季/全集How To Get Away With Murder迅雷下载
- 你知道从浏览器发送请求给SpringBoot后端时,是如何准确找到哪个接口的?(下篇)学废了吗?
- jquery可见性选择器(综合)
- JavaScript中带有示例的Math.log10()方法
- 爱慕内衣信息化颠覆流程重构供应链
- 小程序使用css变量,小程序使用css变量实现“换肤”方案
- JavaScript数据结构与算法(1)(数组、栈、队列、链表)(ES6)
- ICCV 2019 | 上海交大MVIG团队提出InstaBoost,换个dataloader函数, COCO提升3mAP
- [saiku] 使用 Apache Phoenix and HBase 结合 saiku 做大数据查询分析
- 开发人员安全问题_开发人员需要了解的安全性
- mysql 交换空间_MySQL优化纪录
- python助教评分问题_【1414软工助教】单元测试 得分榜
- Linux对象文件是个啥东东
- php exeil导入,反编译工具ILSpy.exe
- 基于51单片机的电子钟万年历LCD1602显示
- 超美二次元响应引导页源码
- 信工三行代码——红色底蕴与编程技术的火花
- 转行程序员日记---2020-09-18【,勿忘国耻】【回忆青春】
热门文章
- linux wc -l命令,Linux wc sort和uniq的用法
- classpath java配置_Java环境变量中classpath是必须配置吗?
- php mysql多条件查询界面_PHP组合查询多条件查询实例代码
- CONVERT TEXT(转换为可排序格式)
- 1.恶意软件中的防双开
- 第九篇 设计模式之装饰模式
- 2015年热恋的肉肉们
- bzoj1048 [HAOI2007]分割矩阵
- thinkphp5.0 session驱动方式问题汇总
- 浏览器CSS hack整理