Code前端首页关于Code前端联系我们

异常,python错误处理总结学习

terry 2年前 (2023-09-25) 阅读数 49 #后端开发

高级语言会使用一系列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前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门