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. mysql突然无法启动的问题

    经常会有这样一个情况是:mysql跑了一段时间后,某一天我们需要重启服务的时候,发现停止后并不能正常启动,会报下面这种错误 这种情况发生的原因绝大多数都是权限的问题: 因为使用了一段时间后,使用期间表 ...

  2. pyHeatMap生成热力图

    库链接:https://pypi.org/project/pyheatmap/ 现在的linux系统默认都是安装好的py环境,直接用pip进行热力库安装 pip install pyheatmap 或 ...

  3. C# 中的语法糖

    1.   using 代替了 try-catch-finally 因为之前是学 Java 的,在连接数据库或者进行文件读写操作时很自然的就使用了 try-catch-finally-,在 C# 中这样 ...

  4. 第28天:js-Tab栏切换封装函数

    一.input.value所有值都是string 二.变量和属性var index=10;//变量var arr=[];//数组arr.index=20;//index为自定义属性,只能在arr下使用 ...

  5. 第三章 AOP

    什么是AOP AOP的编写方式 什么是AOP? 是一种面向切面的思想,关注的是切面中的相似功能,将这些功能抽离出来,提高代码的复用性 AOP术语 advice-通知:要执行的任务 Spring切面有5 ...

  6. 【bzoj2654】tree 二分+Kruscal

    题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. 输入 第一行V,E,need分别表示点数,边数和需要的白色边数. 接下来E行,每 ...

  7. JavaScript中Switch使用

    switch 语句用于基于不同的条件来执行不同的动作.使用 switch 语句来选择要执行的多个代码块之一. switch(n) { case 1: 执行代码块 1 break; case 2: 执行 ...

  8. NOIP1998 提高组

    [NOIP2002] 提高组 T2.联接数 算法:贪心+字符串处理 [问题分析]: 按整数对应的字符串大到小连接,因为题目的例子都符合,但是不难找到反例:12   121 应该组成12121而非121 ...

  9. 【POJ2728】Desert King(分数规划)

    [POJ2728]Desert King(分数规划) 题面 vjudge 翻译: 有\(n\)个点,每个点有一个坐标和高度 两点之间的费用是高度之差的绝对值 两点之间的距离就是欧几里得距离 求一棵生成 ...

  10. NOIP2017 列队——平衡树

    平衡树蒟蒻,敲了半天. 其实思路很简单,就是把许多个人合并成一个区间.必要的时候再拆开.(是不是和这个题的动态开点线段树有异曲同工之妙?) 每次操作最多多出来6个点. 理论上时间复杂度是nlogn,空 ...