只做涂鸦笔记之用,如有疑议等问题可留言探讨。
#!/usr/bin/env python2.7 # -*- coding: utf-8 -*- # 异常 Exception # 按照自己的方式出错 # raise 语句 raise Exception Traceback (most recent call last): File "<stdin>", line 1, in <module> Exception raise Exception('Your exception message') Traceback (most recent call last): File "<stdin>", line 1, in <module> Exception: Your exception message #以上只是一个简单的触发异常的例子 #内建的异常类型有很多,使用 dir函数列出 exceptions 模块的内容 >>> import exceptions >>> dir(exceptions) ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'Buffer Error', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'EnvironmentError', 'E xception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'I mportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'Key boardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'NotImplementedError ', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'R untimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TypeError', 'Unbound LocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'Unicod eTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'Win dowsError', 'ZeroDivisionError', '__doc__', '__name__', '__package__'] >>> # 所有这些异常都可以在 raise 使用 # 一些重要的异常,掌握这些,可以很快的分析出程序出问题的原因 Exception AttributeError IOError IndexError KeyError NameError TypeError SyntaxError ValueError ZeroDivisionError # 自定义异常,直接或者间接从 Exception类继承 class MyException(Exception): pass class MyException(IOError): pass # 捕捉异常 try: # code except Exception: # Exception 可以选择 # message # 还可以使用多个 except try: # todo except ZeroDivisionError: # todo except TypeError: # toto # 一块语句,捕捉多个异常 try: # todo except (ZeroDivisionError, TypeError): # 3.0中有所改变 excetp (ZeroDivisionError, TypeError) as e # todo # else 语句 try: # todo except: # todo else: # 程序没有发生异常的情况下,会执行此语句 # todo # finally 语句 不管异常是否发生,都会被执行 # 与 try联合使用 try: # todo finally: # todo try: # todo except: # todo finally: # 2.5版本之前,要独立使用,2.5以后,可以*组合 # todo # 异常和函数, 异常是层层向上传递的 def faulty(): raise Exception('some message') def ignore_exception(): faulty() def handle_exception(): try: faulty() except: print 'Exception handle' >>> ignore_exception() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in ignore_exception File "<stdin>", line 2, in faulty Exception: some message >>> handle_exception() Exception handle >>> # 出错应该尽可能的使用 try/except 替代if/else ,这样更python化 # 涉及函数 warning.filterwarnings(action,...)