Python笔记(十五)_异常处理

try-except语句

try:

被检测代码

except Exception [as reason]:

出现异常后的处理代码

 

例:

>>>try:

sum = 1+'1'

f=open('未定义文件.txt')

print(f.read())

f.close

except OSError as reason:

print('文件出错啦!错误原因:' + str(reason))

except TypeError as reason:

print('类型错误' + str(reason))

运行结果:类型错误unsupported operand type(s) for +: 'int' and 'str'

其中第三行到第7行代码未运行,原因是try语句中一旦出现异常,就会直接定位到对应的except语句去,剩下的检测代码不会再被运行

 

try-finally语句

try:

被检测代码

except Exception [as reason]:

出现异常后的处理代码

finally:

无论如何都会被执行的代码

 

例:

try:

f=open('123.txt','w')

print(f.write('hello'))

sum=1+'1'     #此处发生异常会直接跳过f.close()语句,造成写入的数据不能被保存

f.close()

except (OSError,TypeError):

print('出错啦!')

 

所以可以用try-finally语句来避免这种情况,修改:

try:

f=open('123.txt','w')

print(f.write('hello'))

sum=1+'1'     #此处发生异常会直接跳过f.close()语句,造成写入的数据不能被保存

f.close()

except (OSError,TypeError):

print('出错啦!')

finally:

f.close()

 

raise语句

自身引发一个异常

>>>try:

for each in range(3):

if each==1:

raise KeyboardInterrupt

print(each)

except KeyboardInterrupt:

print('退出啦!')

0

退出啦

 

assert断言

断言等价于布尔真值得判定,在Python中它们运行时进行判别

断言语句:

assert expression[,arguments]

可以想象成raise if

比如:

assert 1==1

assert len('my list')<10

 

 python标准异常总结

 

AssertionError

断言语句(assert)失败

AttributeError

尝试访问未知的对象属性

EOFError

用户输入文件末尾标志EOF(Ctrl+d)

FloatingPointError

浮点计算错误

GeneratorExit

generator.close()方法被调用的时候

ImportError

导入模块失败的时候

IndexError

索引超出序列的范围

KeyError

字典中查找一个不存在的关键字

KeyboardInterrupt

用户输入中断键(Ctrl+c)

MemoryError

内存溢出(可通过删除对象释放内存)

NameError

尝试访问一个不存在的变量

NotImplementedError

尚未实现的方法

OSError

操作系统产生的异常(例如打开一个不存在的文件)

OverflowError

数值运算超出最大限制

ReferenceError

弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象

RuntimeError

一般的运行时错误

StopIteration

迭代器没有更多的值

SyntaxError

Python的语法错误

IndentationError

缩进错误

TabError

Tab和空格混合使用

SystemError

Python编译器系统错误

SystemExit

Python编译器进程被关闭

TypeError

不同类型间的无效操作

UnboundLocalError

访问一个未初始化的本地变量(NameError的子类)

UnicodeError

Unicode相关的错误(ValueError的子类)

UnicodeEncodeError

Unicode编码时的错误(UnicodeError的子类)

UnicodeDecodeError

Unicode解码时的错误(UnicodeError的子类)

UnicodeTranslateError

Unicode转换时的错误(UnicodeError的子类)

ValueError

传入无效的参数

ZeroDivisionError

除数为零

转载于:https://www.cnblogs.com/demilisi/p/11038389.html

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

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

相关文章

配置左菜单控制点

IsModuleAdmin!"1"&ISSYSTEMDBA!"1"1.判断是否模块管理员 2.判断是否系统管理员转载于:https://www.cnblogs.com/sheme/archive/2010/10/07/1845196.html

为MFC中的ListBox添加水平滚动条

我们知道&#xff0c;MFC中的水平滚动条并不像垂直滚动条那样的智能。当文字超出ListBox的宽度时&#xff0c;水平滚动条并不会自己出现&#xff0c;我们需要手动的调用CListBox中的函数SetHorizontalExtent设置宽度&#xff0c;单位为像素。 我们可以自己添加智能水平滚动条&a…

linux常用高级命令,Linux常用高级文件操作命令

Linux常用高级文件操作命令 cat 查看文本#cat 文件名 打印文件内容到当前屏幕上#cat -n 文件名 显示行号#cat gt;Linux常用高级文件操作命令cat 查看文本#cat 文件名 打印文件内容到当前屏幕上#cat -n 文件名 显示行号#cat > a.txt 可以用这种方法修改或…

java高并发实战Netty+协程(Fiber)|系列1|事件驱动模式和零拷贝

今天开始写一些高并发实战系列。 本系列主要讲两大主流框架&#xff1a; Netty和Quasar(java纤程库) 先介绍netty吧&#xff0c;netty是业界比较成熟的高性能异步NIO框架。 简单来说&#xff0c;它就是对NIO2的封装&#xff0c;但提供了更好用&#xff0c;bug更少的API。 为什么…

诗歌rails 之rails g

http://www.viget.com/extend/rails-3-generators-the-old-faithful/转载于:https://www.cnblogs.com/orez88/articles/1852408.html

桌面级linux推荐,七大顶级桌面比较!Linux平台自由选择

七大顶级Linux桌面&#xff1a;Unity对于开源Linux平台来说&#xff0c;如何选择就是首要解决的问题。通常Linux发行版都有默认的桌面成为你的首选&#xff0c;但目前可供选择的桌面环境种类繁多。特别是Ubuntu系统一个平台就提供9种正式备选版本&#xff0c;且各自拥有不同的桌…

最大子列和问题

问题陈述&#xff1a; 给定N个整数的序列{A1, A2, ... , AN}&#xff0c;求函数ƒ(i, j) max{0, Ai Ai1 ... Aj}(1<i<j<N)的最大值。 问题分析&#xff1a; 求给定数列的最大子列和。 算法设计&#xff1a; 算法1&#xff1a;计算每个子列的和 时间复杂度: T(N) …

蓝牙模块音频BLE数据数传串口AT指令的使用方法

一、简介 蓝牙模块&#xff0c;使用其实是非常简单的&#xff0c;因为它把比较麻烦的蓝牙射频以及外围的电路&#xff0c;都集成在一起&#xff0c;对于用户来说&#xff0c;就是一个黑盒子&#xff0c;只用关注应用&#xff0c;大可不必关心他实现的细节&#xff0c;所以深受广…

flash 及 flex 技术

前天&#xff0c;一个好朋友开发了一个新版本的基因组浏览器&#xff0c;效果及影响非常好。且说今天是2010年10月19日&#xff0c;一个让我感受良多的日子。此时&#xff0c;我想借这篇文章记录两个重要的心得。一个是关于人的执着及长成&#xff0c;另一个是关于技术的“执着…

linux下生成源程序控制流图,Linux下控制(统计)文件的生成的C代码实现

本文分享了Linux下控制(统计)文件的生成的C代码实现案例&#xff0c;供大家参考&#xff0c;具体内容如下一、需求描述不定时地在Linux机器下的某目录中放入文件&#xff0c;文件内容中包含了用户号码、起止时间等字段&#xff0c;现要求编写一程序来统计目前该目录中所有文件中…

SharePoint Online 创建门户网站系列之首页布局

前 言 SharePoint Online中创建首页布局&#xff0c;一般都是首先将美工提供的效果图&#xff0c;切图成为Html Css Script的形式&#xff0c;然后&#xff0c;将所有资源文件传到SharePoint Online的资源库&#xff0c;在Designer中创建页面&#xff0c;添加Html页面&#x…

Android 3.0细节曝光:Google程序更耀眼

来源&#xff1a;腾讯科技 发布者&#xff1a;腾讯科技 Phandroid 网站今天披露了Android 3.0&#xff08;Gingerbread&#xff09;的一些细节。新系统仍在开发之中&#xff0c;不过有些 Google 员工已经在自己的 Nexus One 上安装了 Android 3.0&#xff0c;下面是一张模糊到…

2014技术总结

2014年,毕业的第四年,技术感觉遇到了瓶颈。整天只会写写crud.偶尔写写其他语言的hello world.写写博客,聊以安慰。 新公司,新契机 公司NLNDIDEeclipseeclipse/ideaJDK57jsjqueryknockoutjs开发框架ssh(spring2.5hibernate3)sh(spring4hibernate5)代码管理svngitmaven项目管理do…

解决无法将java项目部署到tomcat中去

project facets java转成web项目 用Eclipse开发项目的时候&#xff0c;把一个Web项目导入到Eclipse里会变成了一个Java工程&#xff0c;将无法在Tomcat中进行部署运行。 方法&#xff1a; 1.找到.project文件&#xff0c;找到里面的<natures>标签&#xff0c;查看是否有下…

linux查看fcsan设备,fc-san存储

对象存储服务 OBS对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的云存储服务&#xff0c;具备标准Restful API接口&#xff0c;可存储任意数量和形式的非结构化数据对象存储服务 OBS对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的云…

VC6安装错误——Error Launching acmboot.exe

因项目需要&#xff0c;我需要安装Microsoft Visual C Professional Version 6 SP5。但是在安装时运行安装目录下的setup.exe&#xff0c;出现Error Launching acmboot.exe&#xff0c;无论如何都进行不下去。我以为是需要安装光盘的问题&#xff0c;因为以前每次安装都是在光盘…

使用flex和bison实现的sql引擎解析

因为老师要求&#xff0c;近期在做oceanbase存储过程的实现&#xff0c;在oceanbase 0.4曾经是不支持存储过程的。实现的主要步骤主要包含 1、语法解析 2、词法解析 3、详细运行语法树的步骤 如今先来说说语法解析吧&#xff0c;在这一块主要是使用的flex&#xff08; 词法分析…

处女座|处女座性格分析

十、处女座代表人物&#xff1a;《圣斗士星矢》沙加 完美是处女们的魔咒 处女们是上帝创造的谦虚认真的典范。他们凡事都认真较劲&#xff0c;对完美的追求无以复加&#xff0c;有时候甚至会因此而着魔疯狂。其实追求完美是一般人的自我完善过程&#xff0c;也许每个人都会觉…

32位linux 内存占用,LINUX内存高,触发OOM-KILLER问题解决

最近遇到两起Linux的内存问题&#xff0c;其一是触发了oom-killer导致系统挂1. 首先确认该系统的版本是32位#uname -aLinux alarm 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i3862. 我们了解一下32位Linux的内存管理结构# DMA: 0x00000000 - 0x00999999 (…

java web过滤器

java过滤器(imooc学习)定义&#xff1a;过滤器是一个服务器端的组件&#xff0c;它可以截取用户端的请求与响应信息&#xff0c;并对这些信息过滤。 工作原理 1、过滤器中web容器启动时就进行加载2、过滤器存在于用户请求和web资源之间3、用户请求和web资源响应的【收发】都经过…