在引发自定义异常时插入

时间:2014-09-09 18:48:48

标签: python exception exception-handling custom-exceptions raise

if not(my_value < max_limit):
    print "value of is %g and hence invalid. It can be upto $g" % (my_value, max_limit)
    raise LimitFailureCheck("Failed due to Incorrect value")

我在其他模块中将自定义异常定义为LimitFailureCheck。当my_value&gt;我想提高它max_limt。因此我编码像上面的方法。它工作正常。我想问的是给用户更多信息我写的print语句也说明问题到底是什么。我可以在提升自定义异常时做同样的事情吗?我试过了

raise LimitFailureCheck("Failed due to Incorrect %g value" % my_value)

但是在打印输出时它引发了相同的声明。

提高LimitFailureCheck(“由于%g值”%my_value不正确而失败)

我希望得到

raise LimitFailureCheck("Failed due to Incorrect 99 value")

我收到的输出:


Traceback (most recent call last):
  File "runtest.py", line 69, in attempt
    func()
  File "c:\Users\pran\projects\check.py", line 66, in runmytest
    raise LimitFailureCheck('"Failed due to Incorrect %g value" % my_value
)
LimitFailureCheck

2 个答案:

答案 0 :(得分:0)

当你在命令行上运行python并且由于未处理的异常而退出python时,python将显示一个回溯和异常字符串。

当我运行此测试程序时

class LimitFailureCheck(Exception):
    pass

raise LimitFailureCheck('i am %s' % 'sad')

Python说

Traceback (most recent call last):
  File "sad.py", line 4, in <module>
    raise LimitFailureCheck('i am %s' % 'sad')
__main__.LimitFailureCheck: i am sad

请注意,python显示失败的行和失败消息。如果您不想要这种行为,您可以捕获异常并打印自己的消息。这是另一个脚本

class LimitFailureCheck(Exception):
    pass

try:
    raise LimitFailureCheck('i am %s' % 'sad')
except LimitFailureCheck, e:
    print 'raise LimitFailureCheck("%s")' % e

显示

raise LimitFailureCheck("i am sad")

答案 1 :(得分:-1)

您可能想尝试格式化。

raise LimitFailureCheck('Failed due to Incorrect {0} value'.format(my_value)