主动抛出异常raise

# ### 主动抛异常
"""
BaseException  所有异常类的父类
Exception      普通异常类的父类
raise + 异常错误类 / 异常错误类对象
"""

# (1) raise 基本语法
# raise KeyError
# raise KeyError()
"""
try:
    raise 
except:
    pass

try:
    raise 
except BaseException:
    pass
"""

# (2) 自定义异常错误类
"""必须继承异常类的父类 BaseException """
# return_errorinfo必须在报错的情况下才能出发内部相应方法获取当前行号和文件名
def return_errorinfo(n):
    import sys
    f = sys.exc_info()[2].tb_frame.f_back
    if n == 1:        
        return str(f.f_lineno)      #返回当前行数
    elif n == 2:    
        return f.f_code.co_filename #返回文件名    


# 通过主动抛出异常,来获取响应的数据
def get_info(n):
    try:
        raise 
    except:
        return return_errorinfo(n)

# 自定义异常错误类
class MyException(BaseException):
    def __init__(self,error_num,error_msg,error_filename,error_linenum):
        self.error_num = error_num
        self.error_msg = error_msg
        self.error_filename = error_filename
        self.error_linenum = error_linenum

eye = "轮回眼"
try:
    if eye == "轮回眼":
        raise MyException( 404,"人类没有轮回眼",get_info(2) , get_info(1) )         
        
except MyException as e: #给自定义MyException异常类的对象起个别名叫做e
    print(e.error_num)
    print(e.error_msg)
    print(e.error_filename)
    print(e.error_linenum)
    

 

posted @ 2021-05-27 09:20  urls  阅读(91)  评论(0编辑  收藏  举报