Python基础学习参考:异常处理

异常

即便Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。Python中一切皆对象,异常也是对象。异常的类型有很多中,但是所有的异常都继承BaseException,也就是说BaseException是所有异常的基类。

列举些常见的异常,如下:

大家可以参考:https://docs.python.org/3.8/library/exceptions.html#bltin-exceptions这个官方文档查看python中所有的异常。

异常处理

程序出现的异常大都不能被处理,需要程序开发人员手动的来处理这些异常。要进行异常处理就离不开这几个关键字,try/catch/else/finally。具体格式如下:

try:

...

exceptexception1:

...

exceptexception2:

...

except:

...

else:

...

finally:

...

解释一下上面结构:try这个代码块里面放的是可能发生异常的代码,当发生异常,try代码块中的后续代码不会再执行,直接跳到except中去了。except可以有多个,分别比较异常跟except对应的异常,如果相同将执行对应的except代码块。比如当try中发送exception1的异常,就会跳到except exception1这个代码块中执行。而上面结构中有个except后面没写任何异常,是一个空的except的语句,用来接受所有的异常,以上面结构为例,当try中产生的异常既不是exception1也不是exception2,就会跳到空的except代码块中。else代码块是可选的,表示当try中没有发生任何异常才会执行else代码块中的代码。finally代码块是无论是否发生异常,finally代码块中的代码都会执行。

with语句

with语句的语法格式:

withcontext_expression [astarget(s)]:

with-body

上面的 context_expression 要返回一个上下文管理器对象。举个例子先直观看一下:

withopen('somefileName')assomefile:

forlineinsomefile:

pass

open方法打开文件的时候可能会发送异常,但是通过使用 with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件(其实是文件句柄)。这就是with的简单用法。

raise主动抛异常

前面我们提到的都是去处理异常,当想抛出异常怎么办呢?通过raise关键字。其实前面提到的异常的产生也都是通过raise给抛出来的。使用格式如下:

raise Exception(这里的Exception可以自己定义)。如何定义一个异常呢?举个例子如下:

classDivisionException(Exception):

def__init__(self, x, y):

Exception.__init__(self, x, y)

self.x = x

self.y = y

通过上面例子可以看出,定义一个异常和定义一个类没有区别,python一切皆对象!

说明:一般我都会将文章写的尽量简短,带来的问题就是有些问题可能说明的不够透彻,对于基础不好的同学,可能就会理解不够透彻,希望大家在后台留言,如果某个知识点大家反馈的比较多,我会通过视频的方式直观的给大家说明!

转载请注明出处,有任何问题欢迎后台留言。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180314G0B0W200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券