Python基础-异常

 
try:
    #code
except SomeError1 as e:
    #code
    print(e)
except SomeError2 as e:
    #code
    print(e)
else:
    #code 没出错的时候执行
finally:
    #code 不管有没有错都会执行

 

也可以这样写:
try:
    #code
except (SomeError1,SomeError2) as e:
    #code

 

所以异常类都继承自Exception,一般放在最后来抓取未知错误
常见错误类型:
  • AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
  • IOError 输入/输出异常;基本上是无法打开文件(python3.x中改为FileNotFindException)
  • ImportError 无法引入模块或包;基本上是路径问题或名称错误
  • IndentationError 语法错误(的子类) ;代码没有正确对齐
  • IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
  • KeyError 试图访问字典里不存在的键
  • KeyboardInterrupt Ctrl+C被按下
  • NameError 使用一个还未被赋予对象的变量
  • SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
  • TypeError 传入对象类型与要求的不符合
  • UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
  • ValueError 传入一个调用者不期望的值,即使值的类型是正确的
其他异常:
  • ArithmeticError
  • AssertionError
  • AttributeError
  • BaseException
  • BufferError
  • BytesWarning
  • DeprecationWarning
  • EnvironmentError
  • EOFError
  • Exception
  • FloatingPointError
  • FutureWarning
  • GeneratorExit
  • ImportError
  • ImportWarning
  • IndentationError
  • IndexError
  • IOError
  • KeyboardInterrupt
  • KeyError
  • LookupError
  • MemoryError
  • NameError
  • NotImplementedError
  • OSError
  • OverflowError
  • PendingDeprecationWarning
  • ReferenceError
  • RuntimeError
  • RuntimeWarning
  • StandardError
  • StopIteration
  • SyntaxError
  • SyntaxWarning
  • SystemError
  • SystemExit
  • TabError
  • TypeError
  • UnboundLocalError
  • UnicodeDecodeError
  • UnicodeEncodeError
  • UnicodeError
  • UnicodeTranslateError
  • UnicodeWarning
  • UserWarning
  • ValueError
  • Warning
  • ZeroDivisionError
自定义异常:
class MyException(Exception):
    def __init__(self,msg):
        self.message = msg
    def __str__(self):
        return self.message
抛出异常:
    使用关键字raise抛出异常
try:
    if xxx:
        raise MyException("xxx")
except MyException as e:
    print(e)

 

 
 
posted @ 2017-07-25 13:05  BetterManPeter  阅读(126)  评论(0编辑  收藏  举报