#!/usr/bin/env python3 # -*- coding:utf-8 -*- # github:https://github.com/tangthis # 错误处理 try: print('try...') r = 10/0 print('result:',r) except ZeroDivisionError as e: print('exception:',e) finally: print('finally') print('END') #如果没有错误发生,可以在except语句块后面加一个else,当没有错误发生时,会自动执行else语句 try: print('try...') r = 10 / int('2') print('result:', r) except ValueError as e: print('ValueError:', e) except ZeroDivisionError as e: print('ZeroDivisionError:', e) else: print('no error!') finally: print('finally...') print('END') #记录错误 import logging def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2 def main(): try: bar('0') except Exception as e: logging.exception(e) main() print('END') #抛出错误 class FooError(ValueError): pass def foo(s): n = int(s) if n==0: raise FooError('invalid value: %s' % s) return 10 / n foo('0') #raise语句如果不带参数,就会把当前错误原样抛出。此外,在except中raise一个Error,还可以把一种类型的错误转化成另一种类型