发布于2019-08-05 18:38 阅读(490) 评论(0) 点赞(3) 收藏(0)
程序出现错误,会自动引发异常,Python也允许使用raise语句自行引发异常。
单独一个raise引发异常,默认引发RuntimeError异常,例:
try: print ('正在运行try块...') raise print ('不再运行...') except Exception as e: print ('正在运行except块...') # 运行结果 正在运行try块... 正在运行except块...
raise后带一个异常类,引发指定异常类的默认实例,例:
def test(): try: print ('正在运行try块...') raise SyntaxError('引发指定异常...') print ('不再运行...') except TypeError as e: print ('对类型无效的操作...',e) except ValueError as e: print ('传入无效的参数...',e) except SyntaxError as e: print ('语法错误...',e) test() # 运行结果 正在运行try块... 语法错误... 引发指定异常...
Python运行自定义异常类,自定义异常都应该继承Exception基类或Exception的子类,自定义类大部分情况下都可以采用AuctionException.py类似的代码来完成,只要改变AuctionException异常的类名即可(使类名更准确的描述该异常)。
自定义一个异常类,例:
class CustomException(Exception): pass def test(): try: raise CustomException except CustomException: print ('触发异常...') test() # 运行结果 触发异常...
当出现一个异常时,单单靠一个方法无法完全处理该异常,必须使用几个方法协作才能完全处理该异常时,就用到except块结合raise语句来完成。
例:
# 自定义异常 class CustomException(Exception): pass class Test: def custom(self): try: aaa except Exception as e: print ('出现异常:',e) raise CustomException('触发自定义异常~') def test(): T = Test() try: T.custom() except CustomException as e: print ('test函数捕获异常;',e) test() # 打印 出现异常: name 'aaa' is not defined test函数捕获异常; 触发自定义异常~
上面程序中,aaa触发了NameError异常,执行Test类中的except块,打印错误信息后,通知该方法调用者再次处理CustomException异常,所以custom()方法的调用者test()函数可以再次捕获CustomException异常,把异常详细信息打印出来。
作者:小胖子
链接:https://www.pythonheidong.com/blog/article/6342/cdc281aa63be4721168e/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!