7.1Python异常处理
目录
前言
我们写的python程序,经常会出现异常与错误,从而导致我们的程序崩溃,今天我们就来学习一下python的异常处理,以便日后的编写流畅的代码。
(一)常见的异常
| 说明 | 错误类型 |
|---|---|
| 语法错误 | ![]() |
| 除零异常 | ![]() |
| 名称异常 | ![]() |
| 类型异常 | ![]() |
| 索引异常 | ![]() |
| 键异常 | ![]() |
| 值异常 | ![]() |
| 属性异常 | ![]() |
| 迭代器异常 | ![]() |
上面的这些异常都是继承:Exception对象。
(二)异常的处理
1.异常的预防:
(1)说明:
有些异常时可以避免的,我们可以添加判断语句,来预防避免异常的发生。
也就是添加容错机制。
(2)源代码:
"""
有一些异常我们是可以预防的,其办法是就添加容错机制
"""
def div(x, y):
if y != 0:
return x/y
print("请注意分母不能为零")
return 0
div(1, 0)
(3)输出效果:

2.解决已经知道类型的异常
(1)说明
解决异常的完整框架:
try:
可能出现异常的代码(可以写多个异常的代码,不过只要遇到第一个异常,就结束该部分的代码,跳转到except部分。)except 错误类型 [as zero]:
发生该错误类型的异常,执行的代码。(可以写多个except 语句并列,从而来接收有可能的异常。)else:
不发生异常,执行的代码。finally:
不管发生与不发生,都有要执行的代码。
(2)源代码
try:
1/0
except ZeroDivisionError as zero:
print("除零异常", zero)
else:
print("没有发生异常")
finally:
print("我最后都是要执行的")
(3)输出效果

3.合并处理多个异常
(1)说明
except 后面可以接收元组类型的多个异常类型名。
except (error1, error2……)
(2)源代码
try:
1/0
print(name)
except (ZeroDivisionError, NameError) as zero:
print("异常类型", zero)
else:
print("没有发生异常")
finally:
print("我最后都是要执行的")
(3)输出效果

4处理未知类型的异常
(1)说明
由于大部分的异常对象都是继承Exception对象。所以我们可以用Exception来接收未知的错误类型。
(2)源代码
try:
1/0
print(name)
except Exception as ec:
print("异常类型", ec)
else:
print("没有发生异常")
finally:
print("我最后都是要执行的")
(3)输出效果

(三)with语句
(1)说明:
with语句也具有自动的容错机制,这里只记录with语句用于文件的操作。
(2)源代码:
"""
高级的文件操作--不需手动关闭文件,并且具有容错机制
"""
with open("test.txt", "r") as f:
# f文件对象
content = f.read()
print(content)
(3)输出效果:
test.txt文件内容是:
1234546
fldklfj dfkkldjf

作者:Mark
日期:2019/02/11 周一
7.1Python异常处理的更多相关文章
- python之异常处理模块
一 . python 内置的异常类 在程序运行过程中,如果出现错误,python解释器会创建一个异常对象,并抛出给系统运行时.即程序终止正常执行流程,转而执行异常处理流程. 在某种特殊条件下,代码中也 ...
- 关于.NET异常处理的思考
年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静的 ...
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 异常处理汇总 ~ 修正果带着你的Net飞奔吧!
经验库开源地址:https://github.com/dunitian/LoTDotNet 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983 ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- IL异常处理
异常处理在程序中也算是比较重要的一部分了,IL异常处理在C#里面实现会用到一些新的方法 1.BeginExceptionBlock:异常块代码开始,相当于try,但是感觉又不太像 2.EndExcep ...
- Spring MVC重定向和转发以及异常处理
SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...
- 【repost】JS中的异常处理方法分享
我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要 ...
- 札记:Java异常处理
异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...
随机推荐
- 从零开始学 Web 之 Ajax(七)跨域
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Docker入门记1
Docker是一个部署容器技术,它出现的目的主要解决开发人员在本机开发的时候安装的各类类库等一系列运行程序的包啊库啊,然后把这些引用的第三方类库和操作系统需要的配置打包起来,形成一个原子环境,然后部署 ...
- Qt5——从零开始的学生管理系统
Qt教程——从零开始的学生管理系统(文件) 一.项目设计 1.需求分析 记录并处理学生成绩信息. 1)添加新的学生数据: 2)根据学号对已有的学生数据进行修改: 3)根据学号删除已存在的学生信息: 4 ...
- 精读JavaScript模式(三),new一个构造函数居然发生了什么?
一.前言 上个月底,爸爸因为事故突然离世,说心里话,现在看到'去世','爸爸'这样的字眼,眼泪都会忍不住在眼眶打转,还是需要时间治愈.最近也只是零碎的看了下东西,始终沉不下心去读书,直到今天还是决定捡 ...
- webpack4打包报错:WARNING in configuration The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults fo
运行命令webpack ./src/main.js ./dist/murenziwei.js后,目录上神马动静都没有,你以为在dist文件夹上会有murenziwei.js吗?毛都没有 警告和错误倒是 ...
- 从零搭建生产环境的ghost2.0博客
当前安装过程是在ghost cli 1.9.2上的,由于ghost更新特别快,我安装我个人博客cmlanche.com的时候还是1.9.1,当时没碰到啥问题,到1.9.2就有一点点不一样了,所以要注意 ...
- .7-浅析webpack源码之WebpackOptionsDefaulter模块
WebpackOptionsDefaulter模块 通过参数检测后,会根据单/多配置进行处理,本文基于单配置,所以会进行到如下代码: if (Array.isArray(options)) { com ...
- [转]JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐
本文转自:https://www.cnblogs.com/landeanfen/p/5461849.html#_label3 阅读目录 一.时间组件 1.效果展示 2.源码说明 3.代码示例 二.自增 ...
- 定义对象为什不可以写到while语句外面。VS2017
/// <summary> /// 绑定产品信息到网络列表 /// </summary> private void BindProduct() { Pros = new Lis ...
- [PHP]算法- 判断是否为二叉搜索树的后序遍历序列的PHP实现
二叉搜索树的后序遍历序列: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 思路: 1.后序遍历是 左右中 ...








