You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python命令行计算器除法:零除错误自定义提示需求

解决命令行计算器除数为零的自定义错误提示问题

要实现除数为零时返回自定义错误、避免冗长Traceback输出的需求,你可以借助Click框架的ClickException来处理异常。以下是具体修改方案:

首先确保导入ClickException:

from click import ClickException

然后修改divide函数(推荐提前判断除数的方式,更直观):

# division command
@calculator.command()
@click.option('--i', is_flag=True, help="forcing integer division")
@click.argument('num1', type=int)
@click.argument('num2', type=int)
def divide(i, num1, num2):
    '''
    Divide two integers (num1/num2).
    To force integer division, use --i option.
    '''
    # 提前检查除数是否为零,直接抛出自定义异常
    if num2 == 0:
        raise ClickException("error: cannot divide by Zero")
    
    if i:
        print("division =", num1 // num2)
    else:
        print("division =", num1 / num2)

你也可以选择捕获原生异常的方式实现,效果一致:

# division command
@calculator.command()
@click.option('--i', is_flag=True, help="forcing integer division")
@click.argument('num1', type=int)
@click.argument('num2', type=int)
def divide(i, num1, num2):
    '''
    Divide two integers (num1/num2).
    To force integer division, use --i option.
    '''
    try:
        if i:
            print("division =", num1 // num2)
        else:
            print("division =", num1 / num2)
    except ZeroDivisionError:
        raise ClickException("error: cannot divide by Zero")

效果说明

当用户输入divide 10 0时,程序会直接输出:

Error: error: cannot divide by Zero

不会再显示冗长的Traceback堆栈信息。

内容的提问来源于stack exchange,提问作者sbreslin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:33:26