05-python中的异常

python的所有的异常都继承自基类: Exception

处理方式和java类似: 

path = raw_input('input the path')
array = path.split('/')
try :
    module = __import__('model.' + array[0])
    model = getattr(module, array[0])
    func = getattr(model, array[1])
    func()
except (ImportError, AttributeError, NameError), e:
    print(e)

finally:
    print('finally to do')

多个异常的捕捉, 可以使用连续的exept或者使用括号进行捕捉

 

import sys

try:
    f = open('myfile.txt')
    s = f.readline()
    i = int(s.strip())
except OSError as err:
    print("OS error: {0}".format(err))
except ValueError:
    print("Could not convert data to an integer.")
except:
    print("Unexpected error:", sys.exc_info()[0])
    raise
else :
  print ('else method')

python的异常还有一个else子句, 没有任何异常的时候去执行

 

自定义异常: 

和其他语言一样, python也可以进行自定义异常, 并且抛出; 

class MyException(Exception):

    def __init__(self, name):
        self.name = name

    # 重写string方法
    def __str__(self, *args, **kwargs):
        return self.name

在其他地方进行抛出的方法: 

try:
    print('start...')
    raise MyException('raise exception')
except MyException as err:
    print(err)
finally:
    print('finally')

使用raise关键字进行抛出

 

posted @ 2017-07-09 19:30  bronk  阅读(204)  评论(0编辑  收藏  举报