打印捕获的异常类型而不打印错误描述

Posted

技术标签:

【中文标题】打印捕获的异常类型而不打印错误描述【英文标题】:Print caught Exception type without printing the error description 【发布时间】:2021-05-31 07:15:16 【问题描述】:

我正在为一个班级项目制作一个简单的计算器程序。我有一个Exception 处理程序,它可以捕获错误并返回错误type。尽管每当它捕获到 Exception 时,它都会打印错误 type 及其描述。有没有办法让它只打印错误type

代码:

operations = ('Add', 'Subtract', 'Multiply', 'Divide')
def insigStrip(flt):
    if str(flt)[-1] == '0':
        return int(flt)
    return flt
def main():
    print('Select operation:')
    for i in range(len(operations)):
        print(str(i+1) + ':', operations[i])
    while True:
        try:
            option = int(input('Enter choice(1/2/3/4): '))
            if option in range(len(operations) + 1):
                x = insigStrip(float(input('Enter first number: ')))
                n = insigStrip(float(input('Enter second number: ')))
                if option == 1:
                    print(x, '+', n, '=', insigStrip(x+n))
                if option == 2:
                    print(x, '-', n, '=', insigStrip(x-n))
                if option == 3:
                    print(x, '*', n, '=', insigStrip(x*n))
                if option == 4:
                    try:
                        print(x, '/', n, '=', insigStrip(x/n))
                    except ZeroDivisionError:
                        print('Cannot divide by Zero.')
                break
            else:
                print('Invalid input.')
                continue
        except Exception as e:
            print('Error caught:', repr(e))
if __name__ == '__main__':
    main()
            

对于xn,它只接受1、2、3 或4 作为输入。例如,我要为x 输入 t。这将引发ValueError。然后 while 循环内的 try except 语句捕获 ValueError 并打印出 Error caught: type(error)

期望的输出:

>>> t
Error caught: ValueError

给定输出:

>>> t
Error caught: <class 'ValueError'> (if type(e))

或:

>>> t
Error caught: ValueError: insert error description (if repr(e))

如何获得所需的输出?

【问题讨论】:

【参考方案1】:

您可以像这样打印捕获的Exception 的类型name

except Exception as e:
    print('Error caught:', type(e).__name__)

【讨论】:

以上是关于打印捕获的异常类型而不打印错误描述的主要内容,如果未能解决你的问题,请参考以下文章

osx上的c ++未捕获异常

python traceback捕获并打印异常

iOS 日志管理异常捕获组件LFLogManager

如何从它的消息中分离异常类型

指定错误类型时如何打印异常? [复制]

Java中的自定义异常捕获方式