从函数中捕获异常

扎克

我有一个函数“零”,我无法更改它或添加行。

def zero(a, b):
    try:
        num = a / b
    except:
        print("cannot divide by zero")

def main():
   zero(10,5)
   zero(10,0)

在主函数中,我想调用零函数并知道该函数是否调用异常。

buran

鉴于您不能zero()以任何方式更改的限制(这是正确的方法),然后您可以重定向stdout和解析输出。

import sys
import io


def zero(a, b):
    try:
        num = a / b
    except:
        print("cannot divide by zero")

if __name__ == '__main__':
    old_stdout = sys.stdout
    for x, y in [(5, 0), (10, 2), (10, 0)]:
        new_stdout = io.StringIO()
        sys.stdout = new_stdout
        zero(x, y)
        result = new_stdout.getvalue().strip()
        if result:
            print(f'Division {x}/{y} raise an error:{result}', file=old_stdout)
    sys.stdout = old_stdout

输出

Division 5/0 raise an error:cannot divide by zero
Division 10/0 raise an error:cannot divide by zero

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档