python中的错误处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的错误处理相关的知识,希望对你有一定的参考价值。
错误的处理语法:
try ... except ... finally ...
把可能会出错的代码放到try语句里面,执行出错,执行except语句块。如果有finally语句块,则执行finally语句块。执行没有错,不执行except语句块,但是一定会执行finally语句块。
可以有多个不同的except语句块。
实例:
try: print(‘try...‘) r = 10/int(‘a‘) print(‘result:‘, r) except ValueError as e: print(‘ValueError: ‘, e) except ZeroDivisionError as e: print(‘ZeroDivisionError: ‘, e) finally: print(‘finally...‘) print(‘END‘)
如果没有错误发生,可以在except后面加一个else,自动执行else。
try: print(‘try...‘) r = 10/int(‘a‘) 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‘)
python所有的错误都继承于BaseException,捕获错误可以跨越多层调用。
抛出错误
要抛出错误,首先需要定义一个错误的class,选择好继承关系,然后使用raise语句抛出一个错误的实例。
class FooError(ValueError): pass def foo(s): n = int(s) if n == 0: raise FooError(‘invalid value: %s‘ % s) return 10 / n foo(‘0‘)
python debug的方法:
直接print(),简单粗暴。
断言assert
用print的地方都可以用assert来替代。
示例:
def foo(s): n = int(s) assert n != 0, ‘n is zero!‘ return 10/n def main(): foo(‘0‘)
断言失败,assert会抛出AssertionError:
logging
把assert换成logging,logging不会抛出错误,可以输出到文件。
import logging logging.basicConfig(level=logging.INFO) # level的级别有debug,info, warning, error s = ‘0‘ n = int(s) logging.info(‘n=%d‘ % n) print(10/n)
以上是关于python中的错误处理的主要内容,如果未能解决你的问题,请参考以下文章
你如何在 python 中处理 graphql 查询和片段?