• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python学习笔记-错误处理

python 搞代码 4年前 (2022-01-09) 13次浏览 已收录 0个评论

程序中的错误处理有多种方式,一类是约定好错误码,然后根据返回的错误码来判断是否发生错误,以及错误的原因。

但是这么做容易将正确的返回值和错误码混在一起,必须要写很多代码来区分,非常不方便。另外一旦出错,还需要一级一级往上报,知道有一级可以处理它。

比较成熟的做法是try…except…finally…这一套错误处理机制。该机制不会干扰正常的返回值。同时也无需一级一级手动上报,而是只需要有一级捕获并处理即可。

代码:

try:print open("Demo.py", 'r')n = 1 / 0except ZeroDivisionError, e:print "zeroDivisionError", eexcept ValueError, <p>本文来源gao!daima.com搞$代!码#网#</p>e:print "ValueError", eelse:print "No Error catched"finally:print "finally"

使用错误处理有几个点需要注意:

可以写多个except用于捕获多个exception

父类exception可以捕获子类的exception,已经被捕获的exception不会再被传递给其他exception。

可以用else来处理没有exeption的情况

finally是无论有无错误都会执行。

Build-in Exception的种类

Python(2.x)内置Exception的继承关系见下图:

The class hierarchy for built-in exceptions is:BaseException+-- SystemExit+-- KeyboardInterrupt+-- GeneratorExit+-- Exception+-- StopIteration+-- StandardError| +-- BufferError| +-- ArithmeticError| | +-- FloatingPointError| | +-- OverflowError| | +-- ZeroDivisionError| +-- AssertionError| +-- AttributeError| +-- EnvironmentError| | +-- IOError| | +-- OSError| | +-- WindowsError (Windows)| | +-- VMSError (VMS)| +-- EOFError| +-- ImportError| +-- LookupError| | +-- IndexError| | +-- KeyError| +-- MemoryError| +-- NameError| | +-- UnboundLocalError| +-- ReferenceError| +-- RuntimeError| | +-- NotImplementedError| +-- SyntaxError| | +-- IndentationError| | +-- TabError| +-- SystemError| +-- TypeError| +-- ValueError| +-- UnicodeError| +-- UnicodeDecodeError| +-- UnicodeEncodeError| +-- UnicodeTranslateError+-- Warning+-- DeprecationWarning+-- PendingDeprecationWarning+-- RuntimeWarning+-- SyntaxWarning+-- UserWarning+-- FutureWarning+-- ImportWarning+-- UnicodeWarning+-- BytesWarning

当然我们也可以自定义一个类,例如:

class MyException(StandardException):

当然,推荐使用Build-in的Exception。在Build-in的Exception中找不到我们所需要的Exception的时候,我们才自定义Exception。

抛出自定义Exception使用以下语法:

raise MyException("this is my Exception")

在测试代码中,我们对Exception的处理中可以直接print exception。但是实际生产代码中直接打印log可能不是很妥。我们可以通过简单的配置使用logging.exception(msg)将错误打印到日志中。如何正确使用python内置的logging模块,可以另开一篇文章介绍。

以上就是python学习笔记-错误处理的内容,更多相关内容请关注搞代码(www.gaodaima.com)!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python学习笔记-错误处理

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址