一次写完代码程序并能够正常运行的概率很小很小,总会有各种各样的错误bug需要处理。有的报错简单,看看报错信息简单修改一下就可以了。

但是有的报错很复杂,特别是一些复杂长代码,需要我们定位到错误的位置,需要判断是什么变量出现了问题,因此我们除了会写代码之外,还需要会解决常见的错误,那么具体有哪些处理错误的方法呢,具体简单介绍以下几块内容:

一.异常处理

基本语法:

try:

#要运行别的代码

except :

#如果在try部份引发了'xxxError'异常就会执行这一步语句

except ,:

#如果上一个except语句引发了'xxxError'异常,获得附加的数据,并执行这一部分的语句

else:

#如果没有出现异常要执行的代码

finally:

#无论发生异常与否,最终都要执行的代码

比如:

try:

print('执行try部分语句:')

i = input('输入一个除数:')

result = 10 / i

print('result:', result)

except ZeroDivisionError:

print("除数不能为0")

else:

print("成功输出结果")

finally:

print("无论发生异常与否,我都会在这里")

当然这里的except后面可以省略错误名称,但是不建议。省略就意味着只要有错误就执行这一部分代码,比如我在这里输入一个字母a,明明错误应该是除数不能为字符串,这里仍然说除数不能为0是不是就不正确了,所以尽量写出错误的名称。

在这个语法中,try是核心成员,意思是不能没有try,其他的内容都可以或多或少的省略掉,比如try-except,try-finally等。

二.debug调试

调试有很多种方法,这里列出主要的几种方法:

1.用print语句

用print()语句把可能有问题的每一个过程都进行输出,就像上面异常处理当中的一样,这种方法简单粗暴,但是在处理完所有的错误之后运行可能会有很多的无用信息,所以最终还要回来删掉这些print语句,于是有了下面的方法。

2.断言(assert)

在这里“断言”是一种程序设计的专业术语,是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果。凡是用print()来辅助查看的地方都可以用断言(assert)来进行替代。

但是在程序中如果导出都是assert也并没有比print()好到哪里去,不过可以通过社吹Python解释的-o参数来启用或停用assert。

3.logging

把print()替换成logging是第三种方式,和assert比,logging不会抛出错误,而且还可以输出到文件中形成一个日志文件。

logging的好处是,在运行代码中不会抛出错误,而是把错误输出到文件中,还可以指定记录信息的级别,有debug、info、warning、error等,且只会有一个生效。

4.pdb

第四种方式是启动Python的调试器pdb,让程序以单步方式运行,可以随时查看运行的状态,就像使用jupyter notebook来一行一行运行代码一样,但是jupyter notebook的功能会更强大一些。

5.IDE

利用一些支持调试功能的IDE工具来进行调试,比如VS code,PyCharm等

6.jupyter notebook

最喜欢的方式就是使用jupyter notebook来进行调试代码,可以自己设置一次运行多少行代码,能够准确定位到具体的错误位置,也是非常推荐的一个方式来进行代码的调试。

最后,代码调试是一个非常需要耐心的过程,也是体现学习程度的一个很重要的技能,希望大家能够好好掌握~

END.

本文整理自爱数据学院中的问答

更多精彩问答,进入下方社区网站查看

http://www.lovedata.cn/invitation

python示例异常处理与程序调试_Python错误处理及代码调试方相关推荐

  1. python示例异常处理与程序调试_笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...

  2. python 除数不能为零的报错有哪些_【社区精选40】Python错误处理及代码调试方法(文末赠书中奖名单)...

    本文整理自爱数据学院中的问答 更多精彩问答,进入下方社区网站查看 http://www.lovedata.cn/invitation 社区精选话题 第40期 Python错误处理及代码调试方法 一次写 ...

  3. python语法错误概述_Python 错误和异常代码详解

    程序中的错误一般被称为 Bug,无可否认,这几乎总是程序员的错... 程序员的一生,始终伴随着一件事 - 调试(错误检测.异常处理).反反复复,最可怕的是:不仅自己的要改,别人的也要改...一万头草泥 ...

  4. python可以用来编写计算机网络程序吗_python学习——网络程序设计

    一.前言 Socket是计算机之间进行网络通信的一套程序接口,最初由Berkeley大学研发,目前已经成为网络编程的标准,可以实现跨平台的数据传输.Socket是网络通信的基础,相当于在发送端和接收端 ...

  5. python能写桌面程序吗_python能写桌面程序吗

    其实Python/Java/PHP都不适合用来做桌面开发,Java还是有几个比较成熟的产品的,比如大名鼎鼎的Java集成开发环境IntelliJ IDEA.Eclipse就是用Java开发的,不过PH ...

  6. python抽奖简单小程序游戏_python实现抽奖小程序

    本文实例为大家分享了python实现抽奖小程序的具体代码,供大家参考,具体内容如下 设计一个抽奖服务 背景:有x个奖品,要求在y天内发完:每天至少发放z个奖品:每天抽奖人数不定,事先会假设一个范围是m ...

  7. python实现录音小程序 界面_python怎么对矩阵添加一列python实现录音小程序

    本文为大家分享了python实现录音小程序的具体代码,供大家参考,具体内容如下 学习目标: 学习电脑网从python实现录音小程序分析来看,对python实现录音小程序的结果.掌握python的pya ...

  8. python爬取豆瓣读书简单_Python用16行代码就搞定了爬取豆瓣读书页面

    点击蓝字"python教程"关注我们哟! 我们一直说Python比较简单,代码体量没有别的程序那么大,对于初学者,尤其是零编程基础的初学者来说,感触没有那么明显,那么今天就让你见识 ...

  9. python爬取豆瓣读书简单_Python用16行代码就搞定了爬取豆瓣读书页面!

    我们一直说Python比较简单,代码体量没有别的程序那么大,对于初学者,尤其是零编程基础的初学者来说,感触没有那么明显,那么今天就让你见识一下:爬取豆瓣读书页面,Python用16行代码就搞定了! p ...

最新文章

  1. 使用Vue.js进行数据绑定以及父子组件传值
  2. Thread Per Message Pattern
  3. ubuntu 64上的GCC如何编译32位程序
  4. [SDOI2011]染色
  5. Java web—Servlet的请求与响应
  6. 在JSP页面中使用Ajax主题时的引入
  7. 取代java_为什么C++没有被java取代
  8. linux定时备份文件到指定文件夹,Linux定时备份数据库到指定邮箱的方法
  9. 线性代数第3章思维导图
  10. 医院病历html模板,三甲医院电子病历模板参考
  11. 一张图读懂阿里云数据库架构与选型
  12. canvas绘制出货单
  13. 【Python爬虫】:爬取58同城二手房的所有房产标题
  14. iDo网站在线设计系统的原理
  15. FIFA Women's World Cup France 2019™ -国际足协继海奶奶女子世足杯曲终人散,USA碰杯
  16. python requests 异步调用_python - 如何使用requests_html异步获取()URL列表? - 堆栈内存溢出...
  17. Kong的插件:Request Size Limiting
  18. springboot接入华为云短信
  19. typora 公式对齐_Typora极简教程
  20. 计算机专业就业方向小结

热门文章

  1. 抽屉效果_越来越多人家装了餐边柜,为什么不多加一排抽屉?很多家庭没想到...
  2. rpg制作大师2003_RPG制作大师MV 我们一起做游戏(十四)
  3. 计算机科学与技术大学教程,21世纪高等学校计算机科学与技术规划教材:大学计算机基础教程...
  4. springboot改文件头_SpringBoot配置文件常用配置示例
  5. 实验2.3 使用重载函数模板重新实现上小题中的函数Max1
  6. matplotlib——在 Jupyter Notebook中绘制图像时只显示变量信息不显示图片
  7. Jupyter Notebook——如何快速地以当前文件夹目录打开 Jupyter Notebook
  8. 【干货】js判断url是否是合法http/https
  9. python tkinter中的锚点(anchor)问题
  10. Out of memory error : GC overhead limit exceeded