【Python笔记】异常处理

1 什么是异常

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。

当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

2 常见的异常的类型

Python中对于异常的分类:

异常名称描述
BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常是输入^C)
Exception常规错误的基类
StopIteration迭代器没有更多的值
GeneratorExit生成器(generator)发生异常来通知退出
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除(或取模)零 (所有数据类型)
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF 标记
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
ImportError导入模块/对象失败
LookupError无效数据查询的基类
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
MemoryError内存溢出错误(对于Python 解释器不是致命的)
NameError未声明/初始化对象 (没有属性)
UnboundLocalError访问未初始化的本地变量
ReferenceError弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError一般的运行时错误
NotImplementedError尚未实现的方法
SyntaxErrorPython 语法错误
IndentationError缩进错误
TabErrorTab 和空格混用
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode 相关的错误
UnicodeDecodeErrorUnicode 解码时的错误
UnicodeEncodeErrorUnicode 编码时错误
UnicodeTranslateErrorUnicode 转换时错误
Warning警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning可疑的语法的警告
UserWarning用户代码生成的警告

3 异常处理的实例

异常处理的通用结构:

try:#可能出现异常的代码
    code
except  异常名:code
else#未发生异常时,执行这里的语句#else也可以不写
     your code 
#other code of your program
code

当我们不清楚异常的具体类型的时候,我们可以获取异常的参数:

try:You do your operations here;......................
except ExceptionType, Argument:You can print value of Argument here...

try-finally的使用,try-finally 语句无论是否发生异常都将执行最后的代码。

注意:你可以使用except语句或者finally语句,但是两者不能同时使用。else语句也不能与finally语句同时使用

在平常写程序的过程中,容易用到的场景包括文件的读写操作和数据库的相关操作,下面来举几个例子说明如何编写异常处理的代码。

#coding=utf-8
# this is an example for file  io exception processing
# open a file 
import os#获取当前文件的路径
file_path = os.getcwd()
print file_path
file_name = "data.txt"
#反斜杠要加转义字符
file_name = file_path + '\\' + file_name
print file_name
#以各种权限打开文件
'''
w     以写方式打开,
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )
'''
#myfile = file(file_name , 'w')
#异常处理myfile = file(file_name )#读取文件中的内容
one_line_content = myfile.readline()  #读取一行的信息print myfile.tell()
content = myfile.read()  #读取当前位置之后的所有的信息
print content
print "read one line"
print myfile.tell()
print one_line_contenttry:myfile.read()
except Exception,e:print "error happened ", e
else:print "there is no exception"
print "go on with the program"
print "do something else!"#读取完文件之后要关闭文件
myfile.close()
try:myfile.read()
except IOError: # 根据异常的种类进行捕获操作print "this is a io error"
except NameError:print "this is a name error"
except ValueError:print "this is a value error"
else: #如果try代码中没有发生异常会执行else里边的操作print "other kind of error"
print "go on with the progarmme"

  对应的数据文件:data.txt

name:12341
zhaozilong:456
zhaoyun:134
simayi:33
Jack:23
Rose:55

  

 

参考文章和连接

①Python异常处理  W3C

转载于:https://www.cnblogs.com/codemyzen/p/4228132.html

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

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

相关文章

java 判断两个数是否异号

java 整型int占4个字节32位,两个数异或后移动31位判断结果,如果是1则异号,如果是0则同号 1 public class ShowEnviromentViarible {2 3 public static void main(String[] args) {4 int num1 1;5 int num2 -1;6 …

法线和法线贴图

法线和法线贴图 1、法线无处不在,这是图形学基础中的基础。 2、法线贴图,凹凸图,位移图等等,在图形学历史上有着比较重要的位置,在很多图形学的架构中都有应用,典型的例如延迟渲染架构。 法线 法线&…

css3制作滚动按钮

1&#xff0c;中间圆点用到css3的gradient属性 2&#xff0c;运动用到css3的transition属性 3&#xff0c;需要写各个浏览器的兼容 代码如下 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <ti…

Unicode、UTF-8、UTF-16

计算机起源于美国&#xff0c;上个世纪&#xff0c;他们对英语字符与二进制位之间的关系做了统一规定&#xff0c;并制定了一套字符编码规则&#xff0c;这套编码规则被称为ASCII编码 ASCII 编码一共定义了128个字符的编码规则&#xff0c;用七位二进制表示 ( 0x00 - 0x7F ), …

在linux命令行中直接执行php命令

有时候用浏览器调试太麻烦&#xff0c;想在linux命令下直接执行php代码 php -r echo 0500; 转载于:https://www.cnblogs.com/wangkongming/p/4236138.html

顶点缺失问题

1. 发送缓冲区过小&#xff0c;模型过大&#xff0c;接收端接收缓冲区太小&#xff0c;并且接收数据与数据处理在一个线程&#xff0c;导致接收速度过慢。最终造成&#xff0c;发送缓冲区被撑爆&#xff0c;数据丢失。 2. U3D端对单个mesh的顶点限制在了65000个。 3. 对于超过…

LoadRunner中Action的迭代次数的设置和运行场景中设置

LoadRunner中Action的迭代次数的设置和运行场景中设置 LoadRunner是怎么重复迭代和怎么增加并发运行的呢&#xff1f;另外&#xff0c;在参数化时&#xff0c;对于一次压力测试中均只能用一次的资源应该怎么参数化呢&#xff1f;就是说这些资源用了一次就不能在用了的。&#x…

IE11 全新的F12开发者工具

我讨厌debug&#xff0c;相信也没多少开发者会喜欢。但是当代码出错之后肯定是要找出问题出在哪里的。不过网页开发的时候遇到 BUG 是一件再正常不过的事情了&#xff0c;我们不能保证自己的代码万无一失&#xff0c;于是使用浏览器的开发者工具调试是我们解决问题最快捷的方法…

OpenXLSX 中文字段读取问题

在读取excel的时候发现有些中文字段无法读取&#xff0c;通过把excel文件解压后对比发现&#xff0c;正常读取和不 能正常读取的中文字段在sharedString.xml中存储的格式有差异&#xff0c;取其中一个字段&#xff0c;如下图&#xff1a; 正常读取的 不能读取的 对比可以看到…

时间格式化需要注意点不可使用本地时间

var compareTime DateTime.Now; var start DateTime.Parse(string.Format("{0:u}", compareTime)); var end DateTime.Parse(compareTime.ToString()); Console.WriteLine(string.Format("时间格式正确{0}", startend)); 各位猜猜&#xff0c;输出是什么…

MFC 窗口置顶

SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); SetWindowPos(NULL, 300, 150, 80, 40, SWP_SHOWWINDOW);

[翻译] ZLHistogramAudioPlot

ZLHistogramAudioPlot A hardware-accelerated audio visualization view using EZAudio, inspired by AudioCopy. ZLHistogramAudioPlot was originally developed for Murmur. 这是使用了EZAudio,一个硬件加速的audio可视化view,灵感来自于AudioCopy.ZLHistogramAudioPlot这个…

Remon Spekreijse CSerialPort串口类的修正版2014-01-10

转自&#xff1a;http://m.blog.csdn.net/blog/itas109/18358297# 2014-1-16阅读691 评论0 如需转载请标明出处&#xff1a;http://blog.csdn.net/itas109 这是一份优秀的类文件&#xff0c;好多的地方值得我们学习&#xff0c;具体在多线程&#xff0c;事件&#xff0c;自定义…

获取进程名称与ID

HANDLE hProceessnap CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hProceessnap INVALID_HANDLE_VALUE){printf_s("创建进行快照失败\n");return -1;}else{PROCESSENTRY32 pe32;pe32.dwSize sizeof(pe32);BOOL hProcess Process32First(hProceessnap, …

CMake find_package

find_package(XXX REQUIRED) CMake 会寻找 XXX_Dir的路径查找.cmake文件 有两种方式设置 1. 命令行模式下&#xff0c;使用-D -DXXX_Dir"路径" 2. 界面模式下&#xff0c;使用Add Entry添加 XXX_Dir 变量并设置路径

Libevent:6辅助函数以及类型

在头文件<event2/util.h>中定义了许多有用的函数和类型来帮助实现可移植的程序。Libevent在内部使用这些类型和函数。 一&#xff1a;基本类型 evutil_socket_t 除了Windows之外的大多数系统&#xff0c;socket就是一个整数&#xff0c;而且操作系统按照数值顺序对它们进…

enable_if

typedef struct {int a; }TestType;int main() {enable_if <1, TestType>::type test1; //正确test1.a 100;enable_if <is_integral<int>::value, TestType>::type test2; //正确test1.a 100;enable_if <0, TestType>::type test3; //错…

一. NSIS介绍

概述 最近需要写一个安装程序&#xff0c;比对了一下现有的安装工具&#xff0c;最后选定了NSIS&#xff0c;最主要的原因一是开源、二是灵活。 下面把我的要求简单列举下&#xff1a; 1、需要检查系统环境是否满足要求 2、需要界面友好的安装过程 3、需要一些自定义界面&…