python-异常处理

有一种说法:
程序错误可分为,编译时错误和运行时错误。写过c程序的人都知道,c程序是最容易出现一些莫名其妙的运行时错误,其实也不算莫名其妙,只是编程时不小心出错,但是编译时候却毫无问题,运行时却总得不到自己想要的结果。

编译时错误,其实很常见,语法错误之类的都算,在程序编译时候就提示的错误。而运行时错误是程序在加载运行时出现的错误,比如数组下标越界,除数为0等,在编译时候无法判断的错误。

java 、python等语言,使用try。。(catch/except)块来捕获这一类错误,也就是我们常说的异常。其实学过java的人应该比较熟悉Error和Exception这两大类别的错误。。。然后再有不懂的。。赶紧自己先去科普一下。。

python 属于面向对象语言,程序抛出的异常,其实也是一个类。
常见的异常类如下:
异常 描述
NameError 尝试访问一个没有申明的变量
ZeroDivisionError 除数为0
SyntaxError 语法错误
IndexError 索引超出序列范围
KeyError 请求一个不存在的字典关键字
IOError 输入输出错误(比如你要读的文件不存在)
AttributeError 尝试访问未知的对象属性
ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串形


python的try语句有两种风格:

一种是处理异常(try/except/else)

try/except/else风格

try:
<语句>
#运行别的代码
except
<名字>:
<语句>
#如果在try部份引发了'name'异常
except
<名字>,<数据>:
<语句>
#如果引发了'name'异常,获得附加的数据
else:
<语句>
#如果没有异常发生

eg:
a = 0
b = 4
c = 2
try:
f = b / a
#f = b / c
except ZeroDivisionError, e:
print e
else:
print f
-----------------------------------------------------------------------------------------------
二种是无论是否发生异常都将执行最后的代码(try/finally)

try/finally风格

try:
<语句>
finally:
<语句>
#退出try时总会执行

a = 0
b = 4
r = 10
try:
r = b / a
except ZeroDivisionError, e:
print e
finally:
print r
--------------------------------------------------------------------------------------

抛出异常:(有时候程序需要主动抛出异常,然后这种情况我们怎么实现呢?)

格式如下:

raise [SomeException [, args [,traceback]]

第一个参数,SomeException必须是一个异常类,或异常类的实例
第二个参数是传递给SomeException的参数,必须是一个元组。这个参数用来传递关于这个异常的有用信息。

第三个参数traceback很少用,主要是用来提供一个跟中记录对象(traceback)

eg:

try:

raise NameError,('Throw Exception')

except NameError, e:

print e #结果返回:Throw Exception
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值