暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python类编写的异常

原创 梯阅线条 2024-01-07
257

1 python类编写的异常

python类编写的异常,可以按组织分类,便于使用和维护,可以附加异常信息,支持继承。

except列出超类名字,匹配该超类实例及超类的子类的实例。

1.1 自定义异常类例子

用法

class SupExc(Exception): pass

描述

自定义异常类继承Exception,创建自定义异常类的实例触发异常。

(1) 自定义一个异常类,继承Exception超类;

(2) 创建自定义异常类的实例,通过raise主动触发;

(3) 通过sys.exc_info()获取异常信息;

示例

>>> import sys >>> class SupExc(Exception): pass >>> class SubExc1(SupExc): pass >>> class SubExc2(SupExc): pass >>> def rf1(): x=SupExc() raise x >>> def rf2(): x=SubExc1() raise x >>> def rf3(): x=SubExc2() raise x >>> for func in (rf1,rf2,rf3): try: func() except SupExc: # except列出超类SupExc,匹配超类 SupExc 及其子类的实例 print('异常类:',sys.exc_info()[0]) # sys.exc_info 列出异常信息 异常类: <class '__main__.SupExc'> 异常类: <class '__main__.SubExc1'> 异常类: <class '__main__.SubExc2'> >>> for func in (rf1,rf2,rf3): try: func() except SupExc as se: # se.__class__ 获取实例 se 所属类 print('异常类:',se.__class__) 异常类: <class '__main__.SupExc'> 异常类: <class '__main__.SubExc1'> 异常类: <class '__main__.SubExc2'>

1.2 异常类重载打印

用法

def __str__(self): pass

描述

创建异常类实例对象送入的构造函数参数会保存到args元组。

重载__str__()方法,定制打印异常类信息。

示例

>>> raise TypeError Traceback (most recent call last): File "<pyshell#26>", line 1, in <module> raise TypeError TypeError >>> raise TypeError('类型错误') Traceback (most recent call last): File "<pyshell#27>", line 1, in <module> raise TypeError('类型错误') TypeError: 类型错误 >>> te=TypeError('类型错误') # 构造函数参数保存到args元组 >>> te.args ('类型错误',) >>> class PriExc(Exception):pass >>> pe=PriExc('梯阅线条') >>> pe.args ('梯阅线条',) >>> class RelStrExc(Exception): # 重载__str__()方法,定制打印异常类信息。 def __str__(self): return '重载str:{},{}'.format(self.__class__.__name__,self.args) >>> rse=RelStrExc('梯阅线条',9555) >>> try: raise rse except RelStrExc as r: print(r,r.args) 重载str:RelStrExc,('梯阅线条', 9555) ('梯阅线条', 9555)

1.3 访问异常信息

用法

try: pass except 异常 as v: v.x

描述

(1) 重载构造函数__init__(),保存异常信息;

(2) 通过as将异常实例赋值给变量v,通过变量v访问异常信息。

示例

>>> class FileFormatErr(Exception): def __init__(self,line,fpath): self.line=line self.fpath=fpath >>> def parse_file(): raise FileFormatErr(95,r'ls.txt') >>> try: parse_file() except FileFormatErr as ffe: print('发生错误在',ffe.fpath,ffe.line) 发生错误在 ls.txt 95

1.4 调用异常方法

用法

class FileFormatErr(Exception): def __init__(self): pass def logerr(self): pass

异常类定义异常方法,在异常处理器进行调用。

(1) 异常类定义方法;

(2) 通过as将异常实例赋值给变量v,通过变量v调用异常方法。

示例

>>> class FileFormatErr(Exception): logf=r'E:\documents\F盘\formaterr.txt' def __init__(self,line,fpath): self.line=line self.fpath=fpath def logerr(self): errs='有错误在:{},{}'.format(self.fpath,self.line) print(errs) with open(self.logf,'a') as lf: lf.write(errs) >>> def parse_file(): raise FileFormatErr(95,r'ls.txt') >>> try: parse_file() except FileFormatErr as ffe: ffe.logerr() 有错误在:ls.txt,95 >>> open(r'E:\documents\F盘\formaterr.txt').readline() '有错误在:ls.txt,95'

2 END

本文首发微信公众号:梯阅线条

更多内容参考python知识分享或软件测试开发目录。

文章转载自梯阅线条,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论