面向对象-08-自定义异常

'''
1.自己写几个继承Exception的异常类,在自己写的类中,定义当异常出现时要执行的代码.
(Exception为所有异常的基类,因为Exception会帮你实现捕获异常的功能)
eg:
import os
class ExistsError(Exception):
pass
class keyInvalidError(Exception):
pass
def func(path,prev):
"""
要求该方法实现:去path路径的文件中,找到前缀为prev的一行数据,获取数据并返回给调用者
1000,成功
1001,文件不存在
1002,关键字为空
1003,未知错误
"""
response = {'code':1000,'data':None}
try:
if not os.path.exists(path):
raise ExistsError('文件不存在')
if not prev:
raise KeyInvalidError('关键字为空')
# except是来捕获异常的,代码执行时是先执行try中的主代码,当主代码抛出异常时,按异常的编写顺序依次匹配.也即先看是不是ExistsError
异常,若是则代码终止,不再继续执行接下来的异常,若不是则再匹配keyInvalidError异常,接下来的步奏同ExistsError一样.
except ExistsError as e:
response['code'] = 1001
response['data'] = '文件不存在'
except keyInvalidError as e:
response['code'] = 1002
response['data'] = '关键字为空'
except Exception as e:
response['code'] = 1003
response['data'] = '未知错误'

2.把主体代码放在try中,把异常代码单独拿出来.这种代码格式是为了方便别看你代码,因为我们一般看别人的代码看的都是try中的.如果你把异常处理也放在try中
会显得你的主体代码非常臃肿.

'''
原文地址:https://www.cnblogs.com/gongteng/p/13567144.html