异常,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前端网发表,如需转载,请注明页面地址。
code前端网
