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 相关文章推荐
python3使用tkinter实现ui界面简单实例
Jan 10 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
Python中的变量和作用域详解
Jul 13 Python
Python快速从注释生成文档的方法
Dec 26 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
Django rstful登陆认证并检查session是否过期代码实例
Aug 13 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 Python
python pyenv多版本管理工具的使用
Dec 23 Python
python logging通过json文件配置的步骤
Apr 27 Python
Python filter()及reduce()函数使用方法解析
Sep 05 Python
Python实现机器学习算法的分类
Jun 03 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
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
可输入的下拉框
2006/06/19 Javascript
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
javascript &&和||运算法的另类使用技巧
2009/11/28 Javascript
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
跟老齐学Python之网站的结构
2014/10/24 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python实现xlsx文件分析详解
2018/01/02 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
Python向excel中写入数据的方法
2019/05/05 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
python中的逆序遍历实例
2019/12/25 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
软件毕业生个人鉴定
2014/03/03 职场文书
工会主席事迹材料
2014/06/03 职场文书
跑吧孩子观后感
2015/06/10 职场文书
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript
python字符串的一些常见实用操作
2022/04/06 Python