python学习笔记-异常

#============================异常============================
#    在python里,异常是一个类,可以处理和使用

#============================异常的分类============================
# AssertError 断言语句(assert)失败
# AttributeError 尝试访问未知的对象属性
# EOFError 用户输入文件末尾标志EOF(Ctrl+d)
# FloatingPointError 浮点计算错误
# GeneratorExit generator.close()方法被调用的时候
# ImportError 导入模块失败的时候
# IndexError 索引超出序列的范围
# KeyError 字典中查找一个不存在的关键字
# KeyboardInterrupt 用户输入中断键(Ctrl+c)
# MemoryError 内存溢出(可通过删除对象释放内存)
# NameError 尝试访问一个不存在的变量
# NotImplementedError 尚未实现的方法
# OSError 操作系统产生的异常(例如打开一个不存在的文件)
# OverflowError 数值运算超出最大限制
# ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象
# RuntimeError 一般的运行时错误
# StopIteration 迭代器没有更多的值
# SyntaxError Python的语法错误
# IndentationError 缩进错误
# TabError Tab和空格混合使用
# SystemError Python编译器系统错误
# SystemExit Python编译器进程被关闭
# TypeError 不同类型间的无效操作
# UnboundLocalError 访问一个未初始化的本地变量(NameError的子类)
# UnicodeError Unicode相关的错误(ValueError的子类)
# UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类)
# UnicodeDecodeError Unicode解码时的错误(UnicodeError的子类)
# UnicodeTranslateError Unicode转换时的错误(UnicodeError的子类)
# ValueError 传入无效的参数
# ZeroDivisionError 除数为零        

#============================异常处理============================
#    需要把越具体的错误,越往前放
# 在异常类继承关系中,越是子类的异常,越要往前放,越是父亲类的异常,越要往后放
# 语法:
    try:
      #尝试实现某个操作,
      #如果没出现异常,任务就可以完成
      #如果出现异常,将异常从当前代码块扔出去尝试解决异常
  except XXError1[,,XXError2,...]: #异常类型1:
      pass #解决方案1:用于尝试在此处处理异常解决问题
  except XXError3[,,XXError4,...]: #异常类型2:
    pass #解决方案2:用于尝试在此处处理异常解决问题
  excpet [Exception [as e]]:
      #解决方案:所有异常的解决方案
  else:
      #如果没有出现任何异常,将会执行此处代码
  finally:
      #不管有没有异常都要执行的代码
        exit() #退出程序

#============================用户手动引发异常============================
#raise 关键字来引发异常
    try:
        raise ErrorClassName
    except:
        pass

#    只要是raise异常,则推荐自定义异常
# 需要注意:自定义异常必须是系统异常的子类
    class User_Define_Error(Error_Class_Name):
    pass

你可能感兴趣的:(python学习)