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
相关产品推荐
相关产品推荐

