前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何避免程序运行过程中出现错误中断程序?(下)

如何避免程序运行过程中出现错误中断程序?(下)

作者头像
叶子陪你玩
发布2020-03-25 21:48:43
1.3K0
发布2020-03-25 21:48:43
举报

前言

本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。

前言

上一篇讲了程序中常见的一些错误,这种错误掌握方法后还是很容易解决的,通常我们写好的程序给其他人使用前肯定也是调试好的。尽管如此,很多人在使用的时候,还是会出现很多意想不到的错误。比如我们程序要求传入的是数字,使用者却传入的是字符;读取文件内容却没有传入文件等操作,从而导致程序报错停止运行,给人不好的体验。

要解决上面的问题,我们除了要写好使用文档,也就是告诉使用者该怎样正确使用外,更重要的是要增加程序的容错性,不管用户进行什么操作都不会导致程序中断报错,而是要有一个正确的提示引导,比如用户输入的数据类型不对时,我们应该让程序提示用户类型不对,需要重新输入数字类型,没有传入文件时,需要提示用户传入正确类型文件。

案例1-求商的程序

下面的程序因为除数是0,所以报错提示了,但是用户可能看不懂这种提示报错,不知道如何正确输入。

下面因为分母变成字符串类型了,所以也出现报错了。

将程序改成下面的样子容错性就会很好了,并且提示也非常友好。

案例2-文件操作程序

下面程序打开一个不存在的文件发生了报错。

文件内容数据是一个字典结构的,实际上是字符串类型数据,没有append方法,添加数据又出现报错了。

尽管我们还是可以用上面的方法去解决这些可能存在报错的问题,但是不是很稳妥,因为这里不像上面那个例子,出错的地方是可以列举出来的,这里如果用同样的方法那肯定不行,得有更好的方法。python提供了异常处理的方法,帮助我们解决了这个问题。

异常处理

异常就是我们上节课提到的哪些报错情况,程序出现异常导致程序停止运行了。为了解决这个问题,我们可以在程序中使用异常处理,具体可以看下面的图片:

把可能出现异常的代码放到try里面,except写上发生异常时执行的代码。不管出现什么异常,程序都会进入到except里面,这里可以写上我们的异常处理代码。

如果你知道程序可能出现的错误,你也可以像下面这样,明确的处理每个异常。

拓展

上面只是介绍了一般我们使用最多的异常处理方法,除了上面说的,异常处理还有很多其它的内容。

assert语句

assert 语句又叫断言语句,其作用和 if 分支非常类似,都是对一个 bool 表达式进行判断,具体功能为:

若被判断的 bool 表达式结果为 True,则继续执行后续代码

若被判断的 bool 表达式结果为 False,程序会引发 AssertionError 错误

你可能会问,既然assert 语句会引发程序崩溃,为什么还要使用它呢?这是因为,与其让程序因条件错误在不定时刻发生崩溃,不如在错误条件出现时,就直接让程序崩溃。

因此,assert 语句用在检查函数参数的属性(如参数是否是按预期的要求传入),或作为程序设计初期的测试和调试的辅助工具。

raise语句

raise语句也可以像assert语句一样使用:

代码语言:javascript
复制
if not expression:    raiseAssertionError(arguments)

raise也可以自己定义异常类,然后去触发异常。

(全文完)


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 案例1-求商的程序
  • 案例2-文件操作程序
  • 异常处理
  • 拓展
    • assert语句
      • raise语句
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档