前言
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
上一篇讲了程序中常见的一些错误,这种错误掌握方法后还是很容易解决的,通常我们写好的程序给其他人使用前肯定也是调试好的。尽管如此,很多人在使用的时候,还是会出现很多意想不到的错误。比如我们程序要求传入的是数字,使用者却传入的是字符;读取文件内容却没有传入文件等操作,从而导致程序报错停止运行,给人不好的体验。
要解决上面的问题,我们除了要写好使用文档,也就是告诉使用者该怎样正确使用外,更重要的是要增加程序的容错性,不管用户进行什么操作都不会导致程序中断报错,而是要有一个正确的提示引导,比如用户输入的数据类型不对时,我们应该让程序提示用户类型不对,需要重新输入数字类型,没有传入文件时,需要提示用户传入正确类型文件。
下面的程序因为除数是0,所以报错提示了,但是用户可能看不懂这种提示报错,不知道如何正确输入。
下面因为分母变成字符串类型了,所以也出现报错了。
将程序改成下面的样子容错性就会很好了,并且提示也非常友好。
下面程序打开一个不存在的文件发生了报错。
文件内容数据是一个字典结构的,实际上是字符串类型数据,没有append方法,添加数据又出现报错了。
尽管我们还是可以用上面的方法去解决这些可能存在报错的问题,但是不是很稳妥,因为这里不像上面那个例子,出错的地方是可以列举出来的,这里如果用同样的方法那肯定不行,得有更好的方法。python提供了异常处理的方法,帮助我们解决了这个问题。
异常就是我们上节课提到的哪些报错情况,程序出现异常导致程序停止运行了。为了解决这个问题,我们可以在程序中使用异常处理,具体可以看下面的图片:
把可能出现异常的代码放到try里面,except写上发生异常时执行的代码。不管出现什么异常,程序都会进入到except里面,这里可以写上我们的异常处理代码。
如果你知道程序可能出现的错误,你也可以像下面这样,明确的处理每个异常。
上面只是介绍了一般我们使用最多的异常处理方法,除了上面说的,异常处理还有很多其它的内容。
assert 语句又叫断言语句,其作用和 if 分支非常类似,都是对一个 bool 表达式进行判断,具体功能为:
若被判断的 bool 表达式结果为 True,则继续执行后续代码
若被判断的 bool 表达式结果为 False,程序会引发 AssertionError 错误
你可能会问,既然assert 语句会引发程序崩溃,为什么还要使用它呢?这是因为,与其让程序因条件错误在不定时刻发生崩溃,不如在错误条件出现时,就直接让程序崩溃。
因此,assert 语句用在检查函数参数的属性(如参数是否是按预期的要求传入),或作为程序设计初期的测试和调试的辅助工具。
raise语句也可以像assert语句一样使用:
if not expression: raiseAssertionError(arguments)
raise也可以自己定义异常类,然后去触发异常。
(全文完)