专栏名称: 36大数据
关注大数据和互联网趋势,最大,最权威,最干货的大数据微信号(dashuju36)。大数据第一科技媒体。不发软文,只做知识分享。
目录
相关文章推荐
大数据文摘  ·  MiniMax 发布 M1 ... ·  昨天  
InfoTech  ·  6月AIGC认证考试安排 ·  3 天前  
人工智能与大数据技术  ·  互联网女皇340页AI报告猛料刷屏 ·  2 天前  
51好读  ›  专栏  ›  36大数据

Python 异常处理完整指南(上)

36大数据  · 公众号  · 大数据  · 2017-05-09 06:20

正文

请到「今天看啥」查看全文


上面的代码转换为 Python是这样的:

因此,异常信息应该被当作唯一一个参数传入给 BaseException.__init__ 方法。


正确的定义异常类


正如你可能已经知道了,在Python中,异常有可能在任何地方被抛出。最基本的异常类叫Exception ,它可用于程序的任何地方。在编码中,没有程序或库直接抛出Exception -这对我们来说还不够。


自从将所有的异常设计为都继承这个顶级的 Exception类,这个类可以很方便的用于捕获所有异常:

为了合理准确的定义你的异常类,这里有一些规范与编程技巧,你可以做为参照:


必须继承 Exception类:

class MyOwnError(Exception):

pass


利用前面提到的BaseException.__str__: 它将传递给BaseException.__init__ 方法的第一个参数打印出来,所以通常在调用 BaseException.__init__ 方法时,只传递一个参数 .


当创建类库时,可以定义一个继承于Exception的基类.客户在使用类库时,会更方便的捕捉任何异常:



在编写任何关于shose的代码时,这段代码将会很有用,除了ShoeError.例如,Django 对异常并没有拆分的很细,这导致我们很难捕获 "Django抛出的任何异常".


提供关于异常的详细信息.这是很有价值的,它可以正确的记录日志,做进一步操作甚至恢复:


然后,任何代码都可以检查异常,并根据异常做进一步处理:

例如,这里检测到违反SQL外键约束时,利用 Gnocchi 抛出特定的应用程序异常(NoSuchArchivePolicy):







请到「今天看啥」查看全文