合适:基础入门
前:这个是最近的一个任务,做好了,所以也放一篇到博客上吧。
就是代码我用图片的形式放出来了,不过妨碍学习哈。(也不是特别完善,
1、 理解异常的概念
2、 掌握处理异常的几种方式
3、 掌握raise和assert语句,会抛出自定义的异常
4、 掌握with和as环境安装器的使用
文章目录
异常简介,异常类,异常处理(部分))
一、 进行重点知识的讲解
1.什么是异常?
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
Python使用异常对象来表示异常状态,并在遇到错误时引发异常。异常对象未被处理(或捕 获)时,程序将终止并显示一条错误消息(traceback)。
在这里我提一下Java的异常:
java 中 处理异常有五个关键字:try catch finally throw throws
try:将可能发生的异常存放到try块中
catch:对异常进行捕获
finally:无论是否出现异常都执行
throw:在方法体中抛出异常
throws:在方法上抛出异常
python 中的异常处理相比java来说,要简单一些,python 中使用四个关键字来处理异常
try:捕获异常,类似于 java 中的 try
except:处理异常,类似于 java 中的 catch
finally:不管是否捕获到异常都会被执行,类似于 java 中 的 finally
raise:抛出异常,类似于 java 中的 throw//在方法中抛出异常
介绍一下:常见内部异常类
Exception 几乎所有的异常类都是从它派生而来的
AttributeError:引用属性或给它赋值失败时引发。
OsError:操作系统不能执行指定任务(如打开文件)时引发,有多个子类。
IndexError 使用序列中不存在的索引时引发 为LookupError的子类
KeyError 使用映射中不存在的键时引发,为LookupError的子类
TypeError 类型不正确。
NameError 找不到名称(变量)时引发。
ZeroDivisionError 在除法或者求模运算的第二个参数为零时引发
2.怎么处理异常?
捕捉异常是对异常进行处理,使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。当我们使用try…except…语句,只要在try中任意一个语句出现问题,那么就直接执行except 跳过异常,然后继续执行程序。
这里使用ZeroDivisionError这个错误作为讲解,比较好理解
// 分母不能为零
###2.1.简单的一个except子句的异常处理
,而assert的作用就是如此。
语法的格式:
它等价语句为
举个例子:
当我们学了挺多的之后肯定会想到Python自己定义的异常不够用,那我们怎么办?所以就需要我们能够多动动脑子,既然不够用,我们也可以向Python创始人学习,既然Python是人创造出来的,那么我们当然也可以自己定义属于我们需要的异常。
而这个实际是前人都考虑过的问题,那我们接下来就讲讲如何实现我们的这个想法。
首先我们了解自定义异常类的模板
举个例子:
4掌握with和as环境安装器。
with 是一个控制流语句,with可以用来简化try finally 代码,用起来也挺方便。
那我们先来个 try finally的例子
with语句操作文件对象例子:书P186
with as 语句的结构如下:
上下文表达式:返回一个下文管理器。
资源对象:可以是单一变量,也可以是元组。
对象的操作:with语句包裹的代码块。在执行代码块之前会调用上下文管理器的_enter_()方法。在执行 代码块后会执行_exit_()方法。
所以,with expresion variable的执行过程是,首先执行_enter_函数,如果使用了as子句,就把_enter_()方法的返回值赋值给as子句中的资源对象。
然后,执行with语句包裹的代码块;
无论在执行过程也没有出现异常,都会执行上下文管理器的_exit_()方法。
exit():”负责执行清理”工作 。如释放资源。
如书本P186-187
比较: