python第八章测试题答案_第八章 异常处理

[TOC]

# 异常处理

Python所有的错误都是从BaseException类派生的,常见的错误类型和继承关系看这里:

https://docs.python.org/2/library/exceptions.html#exception-hierarchy

## 语法

~~~ python

try:

pass

except:

pass

finally:

pass

==========

例:

==========

try:

print 10 / 0

except Exception, e:

print e

finally:

print 'finally...'

~~~

* 如果错误没有被捕获,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出。

~~~ python

=============================

异常会被Python解释器捕获

=============================

def foo(s):

return 10 / int(s)

def bar(s):

return foo(s) * 2

def main():

bar('0')

>>> main()

~~~

## 自定义异常类

* 语法:

➣ ` class CustomException(Exception): pass`

* 向其他类一样,只要确保从Exception类继承(不管是间接还是直接的,就是说继承其他的内建异常类也可以)

## 多个Except

~~~ python

try:

x = input('Enter the first number: ')

y = input('Enter the second number: ')

print x / y

except ZeroDivisionError:

print 'ZeroDivisionError...'

except TypeError:

print 'TypeError...'

# 或

except (ZeroDivisionError, TypeError):

print 'Error Message...'

~~~

## 获取异常的对象 e

~~~ python

try:

print 1 / 0

except (ZeroDivisionError, TypeError), e:

print 'Error Message: ', e

~~~

## 给try/except添加else语句

**else中的语句**只有在**没有异常**发生的时候**才会执行**

* 语法:

~~~ python

try:

except:

else:

finally:

~~~

~~~ python

============================================================

例:

输入不正确会引异常,程序就会不断要求输入

输入正确没有异常,就会执行else中的语句,结束程序

============================================================

while True:

try:

x = input('Enter the first number: ')

y = input('Enter the second number: ')

print x / y

except:

print 'Invalid input,please try again!'

else:

break

finally:

print 'exec finally...'

~~~

## raise关键字

将异常抛向上层调用处

~~~ python

def cacl():

try:

print 1 / 0

except:

raise Exception('Something is wrong!') # 从此处抛出异常到标记二处

def exec_cacl():

cacl() # 标记二 此处将异常继续外抛至标记三处

# 标记三 此处异常未做处理,程序强制终止

>>> exec_cacl()

# 下面代码给调用exec_cacl函数添加了异常捕捉优化处理

# 程序捕捉到异常后,会继续向下执行,不会强制终止程序

try:

exec_cacl()

except Exception, e:

print 'exec_cacl errorInfo: ', e

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值