Python中的异常处理

来源:互联网 发布:java encodeuri 编辑:程序博客网 时间:2024/06/07 04:42

异常

Python中异常的处理机制:try……except……finally

  • try:将可能出潜在的代码放在try语句中,try语句块中一旦出现错误,try语句块后面的的代码就不在执行。
  • except:错误类型,变量名,错误处理的代码
  • finally:不管try中会不会出现异常,他都会执行finally中的语句
    总结一下,就是当try语句块中出现错误,刚好是except捕获的错误类型,执行执行错误代码,否则直接报错

举个例子1

try:    print aexcept NameError,e:    print "程序还继续执行"    print "错误类型 %s"%(e)finally:    print "不管有没有异常,我都会被执行"print "总算执行完了"结果:程序还继续执行错误类型 name 'a' is not defined不管有没有异常,我都会被执行总算执行完了

例二(前面讲过的例子)

data  = raw_input("请输入URL:")array = data.split('/')try:    #userspance = __import__(array[0])    userspance = __import__('backend.'+array[0])    model = getattr(userspance, array[0])    func = getattr(model, array[1])    Func()except (ImportError,AttributeError),e:    print e    print '自定义的404'

raise异常

  • 和try异常不同的是,如果程序出现raise异常程序不会继续执行。他是人为抛出的,在程序员认为这里出现错误会影响整个程序的运行的地方使用。
class AgeError(IOError):    passage = input()if age < 0 or age >200:    raise  AgeErrorprint "hello"#注意这个程序如果你输入大于200和小于0的数,他就会引发raise异常,他是系统级别的,直接中断程序执行,hello就不会被打印出来。

自定义异常和手动触发异常

自定义异常

  • __srt__
    他的意思是print这个对象的时候,它会打印这个__str__方法中的返回值
class MyException(Exception):    def __init__(self,msg):        self.error = msg    def __str__(self, *args, **kwargs):        return self.errorobj = MyException('错误')print obj#输出结果:错误

手动触发异常

class MyException(Exception):    def __init__(self,msg):        self.error = msg    def __str__(self, *args, **kwargs):        return self.errorraise MyException("我错了")输出结果:Traceback (most recent call last):  File "E:\Epython\day04\oop\index.py", line 150, in <module>    raise MyException("我错了")__main__.MyException: 我错��
  • 作用
def Validata(name,pwd):    if name == 'feitian' and pwd == '123':        return True    else:        return Falsetry:    res = Validata('feitian', 123)    if res:        print '登录成功'    else:    #    print '登录失败'    #这里就不用在print 和记录到数据库        raise Exception('登录失败')except Exception,e:        print '记录到数据库'        print e
原创粉丝点击