python 中的异常

try ... except 语句


#!/usr/bin/python
# Filename: try_except.py

import sys

try:
            s = raw_input('Enter something --> ')
except EOFError:
            print '\nWhy did you do an EOF on me?'
            sys.exit() # exit the program
except:
            print '\nSome error/exception occurred.'
            # here, we are not exiting the program

print 'Done'


在这个程序中,Ctrl+D 就会出现 EOFError 异常。


自定义exception 并 raise

#!/usr/bin/python
# Filename: raising.py

class ShortInputException(Exception):
        '''A user-defined exception class.'''
        def __init__(self, length, atleast):
                Exception.__init__(self)
                self.length = length
                self.atleast = atleast

try:
        s = raw_input('Enter something --> ')
        if len(s) < 3:
                raise ShortInputException(len(s), 3)
        # Other work can continue as usual here
except EOFError:
        print '\nWhy did you do an EOF on me?'
except ShortInputException, x:
        print 'ShortInputException: The input was of length %d, \
        was expecting at least %d' % (x.length, x.atleast)
else:
        print 'No exception was raised.'


使用finally

这样可以保证,不管发生什么事情,finally总是被执行到。

可以做一些资源清理的工作。

#!/usr/bin/python
# Filename: finally.py

import time

try:
    f = file('finally.py')
    while True: # our usual file-reading idiom
        line = f.readline()
        if len(line) == 0:
            break
        time.sleep(2)
        print line,
finally:
    f.close()
    print 'Cleaning up...closed the file'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值