python类编写的异常
2023-12-26 23:51:08
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'
文章来源:https://blog.csdn.net/sinat_34735632/article/details/135232938
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!