一
异常
即便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一切皆对象!
说明:一般我都会将文章写的尽量简短,带来的问题就是有些问题可能说明的不够透彻,对于基础不好的同学,可能就会理解不够透彻,希望大家在后台留言,如果某个知识点大家反馈的比较多,我会通过视频的方式直观的给大家说明!
转载请注明出处,有任何问题欢迎后台留言。
领取专属 10元无门槛券
私享最新 技术干货