14 异常

第15节 异常

作业解答

# 根据课堂上给出的上下文管理器,判断IO操作和文件操作那个速度快
from datetime import datetime
import io
​
class RunTime(object):def __enter__(self):self.start_time = datetime.now()print(self.start_time)return self.start_time
​def __exit__(self, exc_type, exc_val, exc_tb):self.end_time = datetime.now()print(self.end_time)print('运行时间为: %s' % (self.end_time - self.start_time))
​
​
sio = io.StringIO()
sio.write('今天天气真好')
​
with RunTime() as a:with open('duqusucai.py', 'r') as file:print(file.read())
​
with RunTime() as b:print(sio.getvalue())
​
​
# 运行结果:
2018-04-18 02:58:20.221762
今天天气真好
2018-04-18 02:58:20.228967
运行时间为: 0:00:00.007205
2018-04-18 02:58:20.229365
今天天气真好
2018-04-18 02:58:20.229521
运行时间为: 0:00:00.000156

 


一,认识异常

  • Python的异常结构

python中所有的异常都是继承自BaseException,分为四大类:

类型描述
SystemExitpython退出异常
Keyboardlnterrupt键盘打断(ctrl + c)
GeneratorExit生成器退出
Exception普通异常

二,异常处理

例1:基本的try...except...
try:   # 首先写一个try,然后把所有可能出错的代码放进去,try后面必须赶上exceptprint('------1------')      # 第一条正确print(a)                    # 第二条错误print('------3-------')     # 第三条正确
except:         # 写上一个exceptpass        # 下面是写 捕获到异常的处理方案
​
运行结果:
------1------
 
例2:捕获具体的异常
try:   # 首先写一个try,然后把所有可能出错的代码放进去print('------1------')      # 第一条正确print(a)                    # 第二条错误print('------3-------')     # 第三条正确
except NameError as info:       # 写上一个except 捕获异常类型print('捕获到异常代码,下面是异常代码:')print(info)
​
运行结果:
------1------
捕获到异常代码,下面是异常代码:
name 'a' is not defined
 
例3:捕获多种异常
# 写法一:可以写多个except
try:pass
except TabError:pass
except NameError:pass
# 写法二:在except后面用括号把多种异常类型给括起来
try:pass
except(NameError,TabError):pass
# 不确定的异常类型
try:pass
except Exception:pass
 
例4:更加丰富的结构
try:   # 首先写一个try,然后把所有可能出错的代码放进去print('------1------')      # 第一条正确print(a)                    # 第二条错误print('------3-------')     # 第三条正确
except Exception as result:     # 在这里用 as 将捕获到的异常 用这个变量保存起来print('捕获到异常,会执行我下面的代码对异常进行处理')print(result)
​
else:print('没有捕获到异常,执行我')
​
finally:print('不管有没有异常,我都会执行')运行结果:
------1------
捕获到异常,会执行我下面的代码对异常进行处理
name 'a' is not defined
不管有没有异常,我都会执行

注意事项:
1. try       下面放可能出错的代码
2. except try下面的代码出错后,会执行except下面的代码
3. else     try下面代码没有错误,执行else下面的代码
4. finally 不管try下面的代码有没有出错,始终都会执行
 
例5:自定义异常类型
class MyError(Exception):       # 自定义的异常必须继承 Exceptionpassraise MyError           # 主动抛出 自定义异常
​
运行结果:
Traceback (most recent call last):File "/home/pyvip/pycharm/23班作业/异常.py", line 37, in <module>raise MyError           # 主动抛出 自定义异常
__main__.MyError
raise   主动抛出异常
格式:raise 异常类型
注意:raise 是主动抛出后面写的异常类型

三,断言(类似raise)

if not False:raise Exception('条件不满足')
​
等效于:
​
assert True  # 不抛出异常
assert False # 抛出异常
def myfunc(num):assert type(num) == int:raise TypeError('不是数字')return num * 10print(myfunc('hello'))
​
# 若传入不为int会报错,反之则会正常运行

四,自行定义异常类型 (控制类型)

class NameMustBeLuckError(Exception):pass
​
​
def myfunc(name):if name != 'luck':raise NameMustBeLuckError('The name must be luck!')
​
try:print(myfunc('juhao'))
except Exception as a:print(a)# 运行结果:
The name must be luck!

 

转载于:https://www.cnblogs.com/zcmq/p/9114150.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[js] 写一个方法把科学计数法转换成数字或者字符串

[js] 写一个方法把科学计数法转换成数字或者字符串 function c(a) { return a.replace(/^(\d)(?:.(\d))*eE(\d)/,(_,a,a1,p,n)>{ a1a1|| if(p-&&n>0) { return 0.0.repeat(n-1)aa1 }else{ return a(a1.length>n? a1.substr(0, n).a1.substr(n): a10.repeat…

Netty心跳机制-长连接

前文需求回顾 完成对红酒窖的室内温度采集及监控功能。由本地应用程序温度传感器定时采集室内温度上报至服务器&#xff0c;如果温度 >20 C 则由服务器下发重启空调指令&#xff0c;如果本地应用长时间不上传温度给服务器&#xff0c;则给户主手机发送一条预警短信。 Netty…

带你反编译APP然后重新打包「MacOS」

最近有小伙伴留言&#xff0c;怎么把一款APP改成自己的信息呀&#xff0c;咳咳&#xff0c;这又来送题材了&#xff0c;今天水一把APP反编译回编译&#xff0c;文中会针对一款APP进行简单的修改信息&#xff0c;问问题的小伙伴还不火速右上角支持一下。 MacOS跟Windows我会分开…

Hadoop学习之pig

首先明确pig是解决什么问题而出现的&#xff0c;pig是为了简化mapreduce编程而设计的&#xff0c;并且有自己的一套脚本语言。其基本由命令和操作符来定义的&#xff0c;如load&#xff0c;store&#xff0c;它的功能很明确&#xff0c;用来大规模处理数据。其脚本形如script.p…

[js] js怎样避免原型链上的对象共享?

[js] js怎样避免原型链上的对象共享&#xff1f; 组合继承 优势 公有的写在原型 私有的卸载构造函数 可以向父类传递参数劣势 需要手动绑定constructor 封装性一般 重复调用父类性能损耗&#x1f330; function Parent (name, friends) {// 私有的部分this.name name;this…

Codeforces 552C Vanya and Scales(进制转换+思维)

题目链接&#xff1a;http://codeforces.com/problemset/problem/552/C 题目大意&#xff1a;有101个砝码重量为w^0,w^1&#xff0c;....&#xff0c;w^100和一个重量为m的物体&#xff0c;问能否在天平两边放物品和砝码使其平衡。解题思路&#xff1a;将m化为w进制的数&#x…

反编译一款APP然后重新打包(Windows环境)

最近有小伙伴私信我&#xff0c;怎么把一款APP改成自己的信息呀&#xff0c;咳咳&#xff0c;这又来送题材了&#xff0c;今天水一把APP反编译回编译&#xff0c;文中会针对一款APP进行简单的修改信息&#xff0c;问问题的小伙伴还不火速右上角支持一下。 MacOS跟Windows我是分…

[js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入

[js] 写一个方法&#xff0c;实时验证input输入的值是否满足金额如&#xff1a;3.56(最多只有两位小数且只能数字和小数点)的格式&#xff0c;其它特殊字符禁止输入 <body><input type"text" id"amount"><em id"message"><…

Vmware下CentOs7 桥接模式下配置固定IP

1.安装完CentOS7后 修改虚拟机网络适配器配置&#xff1a;改成桥接模式 2.设置Vmware的 编辑->虚拟网络编辑器 3.重启CentOs7 , 查看网络 # ip addr interface是&#xff1a; ens33 4.查看本地真实机ip&#xff0c;然后配置虚拟机固定ip windows 进入命令行模式cmd&#xf…

[js] 使用delete删除数组,其长度会改变吗

[js] 使用delete删除数组&#xff0c;其长度会改变吗 使用delete删除数组元素&#xff0c;其长度会改变吗&#xff1f;咱来写个案例&#x1f330;看看就知道了&#xff1a;var arr [1, 2, 3] delete arr[1] console.log(arr) console.log(arr.length)结果如下&#xff1a;通过…

MacOS svn:E230001 Can‘t use Subversion command line client: svn The path to the Subversion executabl

注意&#xff1a;本文仅针对于 MacOS 系统。 错误信息如下&#xff1a; Cant use Subversion command line client: svn The path to the Subversion executable is probably wrong. Fix it.好家伙&#xff0c;今天发现 IDEA 中的 SVN 突然不能用了… 因为之前的 SVN 是使用 …

Seurat | 单细胞分析工具

Seurat是一个老牌的单细胞分析工具了&#xff08;satija的力作&#xff09;&#xff0c;我之前测试过&#xff0c;但是没怎么用。 最近发现这个工具又publish在了NBT上&#xff0c;所以很有必要看一下这篇文章。 Integrating single-cell transcriptomic data across different…

[js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走?

[js] 代码中如果遇到未定义的变量&#xff0c;会抛出异常吗&#xff1f;程序还会不会继续往下走&#xff1f; 在浏览器环境下JS 解析器解析到未定义变量时&#xff0c;会抛出 Uncaught ReferenceError 错误&#xff0c;JS 引擎会停止解析后面的代码&#xff0c;但之前的代码不…

创建线程都有哪些方式?— Callable篇

今天我们来看一道面试题引发的思考 问&#xff1a; 创建线程都有哪些方式&#xff1f; 答&#xff1a; 我了解的有四种创建方式&#xff1a; 继承Thread类创建线程类通过Runnable接口创建线程类通过Callable和Future创建线程通过线程池创建 相信大家回答这个问题没什么难度吧…

[js] 说说你对JSBridge的理解

[js] 说说你对JSBridge的理解 js和原生应用之间交互的桥梁个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

ASP.NET Core 网站发布到Linux服务器

长期以来&#xff0c;使用.NET开发的应用只能运行在Windows平台上面&#xff0c;而目前国内蓬勃发展的互联网公司由于成本的考虑&#xff0c;大量使用免费的Linux平台&#xff0c;这就使得.NET空有一身绝技但无法得到广大的施展空间&#xff0c;.NET平台被认为只适合开发企业内…

如何暂停一个正在运行的线程?

今天把小伙伴问懵了&#xff0c;小刚&#xff0c;你知道怎么停止一个线程吗&#xff1f; 这…&#xff0c;这…&#xff0c;stop&#xff1f; 原来平时小刚这小子只知道创建线程&#xff0c;不知道怎么暂停线程呀~[狗头] 停止线程是在多线程开发中很重要的技术点&#xff0c;…

[js] js循环中调用异步的方法,如何确保执行结果的顺序是正确的?

[js] js循环中调用异步的方法&#xff0c;如何确保执行结果的顺序是正确的&#xff1f; An example:let searchApi function(arg){return new Promise((resolve,reject)>{setTimeout(()>{console.log(arg)resolve(arg)}, 20)}) }; let fields [1,2,3,4]; let arr new…

Page Cache的落地问题

除非特别说明&#xff0c;否则本文提到的写操作都是 buffer write/write back。 起因 前几天讨论到一个问题&#xff1a;Linux 下文件 close成功&#xff0c;会不会触发 “刷盘”&#xff1f; 其实这个问题根本不用讨论&#xff0c;查一下就知道。 man 2 close 的 NOTES 一节里…

Docker中搭建FastDFS文件系统(多图)

关于FastDFS FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统&#xff0c;他对文件进行管理&#xff0c;主要功能有&#xff1a;文件存储&#xff0c;文件同步&#xff0c;文件访问&#xff08;文件上传/下载&#xff09;等&#xff0c;特别适合以文件为载体的在线服务…