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. shmem:

    在/proc/meminfo中发现,cached不等于ActiveFile + InActiveFile,我们来看看cache到底都包括啥内存 1)首先肯定包含activeFile 和 inactiv ...

  2. Java设计

    重构前 CustomDataChar | getConnection()findCustomers()createChar()displayChar() 重构后 CustomDataChar | da ...

  3. Android各分辨率定义的图片规格

    我们定义的app图片规格 app图标需要分iphone和android两套 iphone: 名称 Iphone4 Iphone5 手机尺寸 960*640(高*宽) 1136*640 (高*宽) 电池 ...

  4. TCP标志位简析

    TCP标志位简析   TCP标志位  URG:此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据: ACK:此标志表示应答域有效, ...

  5. Delphi 的绘图功能[8] - TextOut、TextWidth、TextHeight

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  6. 第71天:jQuery基本选择器(二)

    jQuery选择器 一.内容过滤选择器 选择器 描 述 返 回 示 例 :contains(text) 匹配含有文本内容text的元素 集合元素 $(“p:contains(今天)”) :empty ...

  7. BZOJ3997 TJOI2015组合数学(动态规划)

    copy: Dilworth定理:DAG的最小链覆盖=最大点独立集 最小链覆盖指选出最少的链(可以重复)使得每个点都在至少一条链中 最大点独立集指最大的集合使集合中任意两点不可达 此题中独立的定义即是 ...

  8. Javascript-基础2

    1. Javascript 字符串里面的方法: obj.length 长度 obj.trim() 移除空白 obj.trimLeft() obj.trimRight) obj.charAt(n) 返回 ...

  9. CentOS7 防火墙配置firewall-cmd

    firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具. firewall-cmd 是 ...

  10. [HDU4532]湫秋系列故事——安排座位

    题面在这里 description 有\(n\)种颜色的小球,每种颜色的小球有\(a_i\)个: 要把它们摆成一排,求相邻小球颜色不相同的摆放方案数. 任意两个合理的安排方法,只要有一个位置的同学不同 ...