Python 异常解决
发布时间:2021-12-11 18:13:04 所属栏目:教程 来源:互联网
导读:Python的异常处理可以向用户准确反馈出错信息,所有异常都是基类Exception的子类。自定义异常都是从基类Exception中继承。Python自动将所有内建的异常放到内建命名空间中,所以程序不必导入exceptions模块即可使用异常。 捕获异常的方式 方法一:捕获所有的异
Python的异常处理可以向用户准确反馈出错信息,所有异常都是基类Exception的子类。自定义异常都是从基类Exception中继承。Python自动将所有内建的异常放到内建命名空间中,所以程序不必导入exceptions模块即可使用异常。 捕获异常的方式 方法一:捕获所有的异常 try: a = b b = c except Exception,data: print Exception,":",data '''输出:<type 'exceptions.Exception'> : local variable 'b' referenced before assignment ' 方法二:采用traceback模块查看异常,需要导入traceback模块,这个方法会打印出异常代码的行号 try: a = b b = c except: print traceback.print_exc() '''输出: Traceback (most recent call last): File "test.py", line 20, in main a = b UnboundLocalError: local variable 'b 方法三:采用sys模块回溯最后的异常 try: a = b b = c except: info = sys.exc_info() print info print info[0] print info[1] '''输出: (<type 'exceptions.UnboundLocalError'>, UnboundLocalError("local variable 'b' referenced before assignment",), <traceback object at 0x00D243F0>) <type 'exceptions.UnboundLocalError'> local variable 'b' referenced before assignment ''' 获取函数名和行号 上面介绍的方法二回打印出问题代码的行号,还有一些方法可以获取函数名和行号 #!/usr/bin/python import sys def get_cur_info(): """Return the frame object for the caller's stack frame.""" try: raise Exception except: f = sys.exc_info()[2].tb_frame.f_back return (f.f_code.co_name, f.f_lineno) def callfunc(): print get_cur_info() if __name__ == '__main__': callfunc() import sys def get_cur_info(): print sys._getframe().f_code.co_name print sys._getframe().f_back.f_code.co_name get_cur_info() (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |