我能在tryexcept blcok中得到断言的字符串吗?

2024-09-28 21:17:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想检查一组输入,如果其中任何一个输入是非法的,我抛出一个错误并发出一个警告,所以我想对警告进行更多的定制,以找出哪一个是错误的。你知道吗

try:
    assert input1<1 something like this, "input1 error xxx"
    assert input2 xxx, "input2 error xxx"
    xxxx
except AssertionError:
   make a warning dialog using the assert infomation
except:
   pass
else:
   pass

有可能吗?我想我可以避免多次尝试除了块或如果块,有一个pythonic的方法来做吗?先谢谢你。你知道吗

明白了。谢谢你的帮助。Assert不应用于test。我现在就修改代码。你知道吗


Tags: 警告错误errorpassassertthissomethinglike
2条回答

为什么不尝试创建自己的自定义异常,并在条件失败时抛出它呢。然后你就能抓住它。这样做的好处是,即使您的代码抛出一些内部错误,您也知道如何处理它。你知道吗

class MyException(Exception):
    pass

....

try:
    #if some condition
    raise MyException()
except MyException:
    #handle this exception

或者因为你在处理测试用例

def mytest(self):
    with self.assertRaises(MyException):
        #some if condition
        raise MyException()

捕获异常并将其转换为字符串:

try:
    assert False, 'Foo'
except AssertionError as e:
    message = str(e)  # 'Foo'
    print(message)

说到这里,assert可以用一个标志来禁用,并且不应该用于必要的条件,只用于调试健全性检查。您应该自己提出一个更具体的自定义异常。你知道吗

相关问题 更多 >