Python运行异常管理解决方案


Posted in Python onMarch 09, 2020

1 前言

Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。

如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。

异常是使用try-except代码块处理的。try-except代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。

使用了try-except代码块时,即便出现异常,程序也将继续运行。

2 运用try-except代码块

我们知道,除数是不能为0的,当程序员误将除数设置为0时,将会出现ZeroDivisionError错误。

实现代码:

try:
   print(6/0)
 except ZeroDivisionError:
   print("you can not divide by zero!")

运行结果:

you can not divide by zero!

工作原理:

将可能出现错误的代码放在try代码块中,如果运行无错误,将跳过except代码块;若导致了错误,Python将查找except代码块,并执行其中的代码。

这样一来,当运行出错时,用户看到的便是一条友好的错误信息。

若try-except后面还有其他代码,那么程序将接着运行。

3 运用try-except-else代码块

实现代码:

print("Please input two numbers, and I will divide them.")
print("Enter 'q' to quit.")

while True:
  first_num = input("\nFirst number: ")
  if first_num == 'q':
    break
  second_num = input("Second number: ")

  try:
    answer = int(first_num) / int(second_num)
  except ZeroDivisionError:
    print("you can not divide by zero!")
  else:
    print(answer)

运行结果:

Python运行异常管理解决方案

工作原理:

一般地,将可能发生异常的代码放在try代码块中。

Python尝试执行try代码块中代码,如果发生错误,则执行except中程序代码;如果运行正常,则执行else代码块中的代码。

这样一来,就有效地避免了可能发生的错误带来的程序崩溃问题,让程序变得更加健壮。

4 运用pass语句

实现代码:

while True:
  first_num = input("\nFirst number: ")
  if first_num == 'q':
    break
  second_num = input("Second number: ")

  try:
    answer = int(first_num) / int(second_num)
  except ZeroDivisionError:
    pass
  else:
    print(answer)

运行结果:

Python运行异常管理解决方案

工作原理:

10 当代码执行出错时,Python将会执行except代码块中的pass语句。pass语句既不会出现traceback,也没有任何输出。

此外,pass语句还可充当占位符,用于提醒程序员该处还未定义任何语句,后面可能会定义语句。

5 小结

到这里,我们就了解了一些处理异常的方式,我们可以根据不同的需求,决定是否向用户报告错误以及怎样报告错误,有效地避免一些异常带来的程序崩溃。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
Python实现批量转换文件编码的方法
Jul 28 Python
python中zip()方法应用实例分析
Apr 16 Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Django给admin添加Action的步骤详解
May 01 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
Python正则表达式高级使用方法汇总
Jun 18 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
了解一下python内建模块collections
Sep 07 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 #Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 #Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 #Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 #Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 #Python
python微信公众号开发简单流程实现
Mar 09 #Python
Python 面向对象部分知识点小结
Mar 09 #Python
You might like
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
php读取html并截取字符串的简单代码
2009/11/30 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
简单谈谈Javascript函数中的arguments
2017/02/09 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
python根据出生日期获得年龄的方法
2015/03/31 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
python读取中文txt文本的方法
2018/04/12 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
主持人婚宴答谢词
2014/01/28 职场文书
向领导表决心的话
2014/03/11 职场文书
淘宝好评语大全
2014/05/05 职场文书
作风年建设汇报材料
2014/08/14 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
辞职书格式样本
2015/02/26 职场文书
实习证明模板
2015/06/16 职场文书
拿破仑传读书笔记
2015/07/01 职场文书