Python异常处理

我们一般使用try-except语句来进行异常处理。

使用except Exception as err可以统一捕捉所有异常,而也可以分开处理单个异常。

# 分开捕捉单个异常

try:
num1 = int(input('Enter the first number:'))
num2 - int(input('Enter the sencond number:'))
print(num1 / num2)
except ValueError: #捕捉数字转化异常
print('Please input a digit!')
except ZeroDivisionError: #捕捉除0异常
print('The second number cannot be zero') # 两种异常一起捕捉 try:
num1 = int(input('Enter the first number:'))
num2 - int(input('Enter the sencond number:'))
print(num1 / num2)
except (ValueError,ZeroDivisionError):
print('Invalid input!') # 统一捕捉所有异常 try:
num1 = int(input('Enter the first number:'))
num2 - int(input('Enter the sencond number:'))
print(num1 / num2)
except Exception as err:
print('Something webt wrong!')
print(err)

else语句

try-except还可以和else一起使用,如果语句中没有异常引发,那么这个else语句就会执行。

try:
num1 = int(input('Enter the first number:'))
num2 - int(input('Enter the sencond number:'))
print(num1 / num2)
except (ValueError,ZeroDivisionError):
print('Invalid input!')
else:
print('Aha, everything is OK.')

循环

如果我们想要用户直到输入正确,那么就要使用循环,使用while True加上break语句

while True:
try:
num1 = int(input('Enter the first number:'))
num2 - int(input('Enter the sencond number:'))
print(num1 / num2)
except (ValueError,ZeroDivisionError):
print('Invalid input!')
print('Aha, everything is OK.')

Finally语句

finallyelse不一样,不管有没有异常引发,finally语句都要执行。

try:
num1 = int(input('Enter the first number:'))
num2 - int(input('Enter the sencond number:'))
print(num1 / num2)
except (ValueError,ZeroDivisionError):
print('Invalid input!')
finally:
print('It is a finally clause.')

上下文管理器(Context Manager)和With语句

如果我们打开文件使用下面的代码,在finally语句中,因为f可能没被成功定义,可能还是会报错。

try:
f = open('data.txt')
for line in f:
print(line, end ='')
except IOError:
print('Cannnot open the file!')
finally:
f.close()

而我们可以使用下面的代码打开文件,通过这个上下文管理器可以定义和控制代码块执行前的准备动作及执行后的收尾动作。

with open('data.txt') as f:
for line in f:
print(line, end='')

【Python学习笔记】异常处理try-except的更多相关文章

  1. Python学习笔记(异常处理)

    用户输入了一个不合规定的值,或者需要打开的文件不存在.这些情况被称作“异常”,一个好的程序需要能处理可能发生的异常,避免程序因此而中断. 例如我们去打开一个文件: f = file('non-exis ...

  2. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  3. Python学习笔记之异常处理

    1.概念 Python 使用异常对象来表示异常状态,并在遇到错误时引发异常.异常对象未被捕获时,程序将终止并显示一条错误信息 >>> 1/0 # Traceback (most re ...

  4. Python学习笔记进阶篇——总览

    Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(Socket编程进阶&多线程.多进程) Python学习笔记——进阶篇[第八周]———进程.线程.协程篇(异常处理) Pyth ...

  5. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  6. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  7. Python 学习笔记(下)

    Python 学习笔记(下) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(下) 函数设计与使用 形参与实参 ...

  8. 大学四年的Python学习笔记分享之一,内容整理的比较多与仔细

    翻到以前在大学坚持记录的Python学习笔记,花了一天的时间整理出来,整理时不经回忆起大学的时光,一眨眼几年就过去了,现在还在上学的你们,一定要珍惜现在,有个充实的校园生活.希望这次的分享对于你们有学 ...

  9. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  10. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

随机推荐

  1. dev_queue_xmit 发生了什么?skb还会在哪里缓存

    见 codebox/net/qdisk/xmit.log中保存了一份记录 调用关系 sch_direct_xmit --> dev_hard_start_xmit --> xmit_one ...

  2. Delphi DBGridEH中,选中行、列、单元格

    // 新增行后,默认首列 procedure TForm1.ADOQuery1AfterInsert(DataSet: TDataSet);begin  with DBGridEh1 do  begi ...

  3. 【SQLAlchemy】SQLAlchemy技术文档(中文版)(上)

    1.版本检查 import sqlalchemy sqlalchemy.__version__ 2.连接 from sqlalchemy import create_engine engine = c ...

  4. JS详细图解全方位解读this

    JS详细图解全方位解读this 对于this指向的理解中,有这样一种说法:谁调用它,this就指向谁.在我刚开始学习this的时候,我是非常相信这句话的.因为在一些情况下,这样理解也还算说得通.可是我 ...

  5. [JSOI2008]小店购物 & bzoj4349:最小树形图 最小树形图

    ---题面(洛谷)--- ---题面(bzoj)--- 其实是同一道题,,,样例都一模一样 题解: 一开始看想了好久,,,还想到了最短路和最小生成树,,然而写的时候才意识到最小生成树应该要用无向边 其 ...

  6. bzoj1854: [Scoi2010]游戏(匈牙利) / GDKOI Day2 T2(最大流)

    题目大意:有n(<=1000000)个装备,每个装备有两个属性值(<=10000),每个装备只能用一次,使用某一个值,攻击boss必须先使用属性为1的,再使用属性为2的,再使用属性为3的, ...

  7. bzoj1297: [SCOI2009]迷路(矩阵乘法+拆点)

    题目大意:有向图里10个点,点与点之间距离不超过9,问从1刚好走过T距离到达n的方案数. 当时看到这题就想到了某道奶牛题(戳我).这两道题的区别就是奶牛题问的是走T条边,这道题是每条边都有一个边权求走 ...

  8. HDU4738:Caocao's Bridges(求桥)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  9. mybatis <where>、<set>、<trim>、<sql>、<foreach>标签的使用

    转:http://www.cnblogs.com/lixiujie/p/5766669.html <resultMap>标签的使用:这个类似于hibernte用于映射我们创建的vo对象与数 ...

  10. Android 悬浮窗口

    Android 悬浮窗口 一.创建悬浮窗口步骤    1.实现一个ViewGroup类,作为悬浮窗口的界面类,以便在里面重写onInterceptTouchEvent和onTouchEvent方法,实 ...