异常,python错误处理总结学习
高级语言会使用一系列try... except...finally...
错误处理系统,它处理错误相当有效,
程序员不需要写错误代码。
尝试
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')
- 如果出现错误,请根据错误类型使用处理以外的其他方法。
- int('a') 将引发 ValueError
- 10/0 将引发 ZeroDivisionError。
- 否则,如果没有错误,则执行其他操作。
- 最终必须被杀死
常见错误类型和继承关系
参见内置异常文档
https://docs.python.org/3/library#/exceptions.html 异常 - 好处级别
try
可以跨多个层调用。函数 main() 调用 bar(),bar 调用 foo()。如果期间仍然出现错误,尝试修复。
def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2 def main(): try: bar('0') except Exception as e: print('Error:', e) finally: print('finally...')
调用堆栈
如果错误没有被捕获,则会被抛出并最终被Python解释器捕获,出现错误消息,然后程序将终止。
错误消息是回溯(最后一次调用)...。这是错误的方法。可以看到错误的原因,最终找到错误的位置。
日志模块
可以在日志中记录错误信息。并允许程序继续执行。
# err_logging.pyimport logging def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2 def main(): try: bar('0') except Exception as e: (e) main() print('END')
会抛出错误
,因为 error 是一个类,获得错误意味着获得该类的实例。因此,错误是故意产生的,例如情境错误。
内部函数有各种类型的错误。您还可以编写自己的函数并抛出错误。
# err_raise.pyclass FooError(ValueError): passdef foo(s): n = int(s) if n==0: raise FooError('invalid value: %s' % s) return 10 / n foo('0')
- 写入错误的类 FooError。
- 使用 raise 语句创建 FooError 的实例。
尝试使用内部函数。像值错误、类型错误
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。