如何在python中断言后继续执行程序?

时间:2016-10-29 22:59:25

标签: python python-2.7 python-3.x

我在python中学习异常,我有一些疑问:

我们可以在raise中使用任何名称作为错误吗?

就像我在使用raise时读过你必须定义错误类型所以我可以使用任何字符串名作为错误吗?像SkienaError或者我必须记住所有错误类型,并且只能使用那些错误类型名称?

    a=int(input())
if a!=10:
    raise SkienaError
else:
    print(a,"pp")

第二个疑问是假设我想用户应该输入int但是他输入字符串这样一个断言弹出但我想程序应该继续而不终止并再次询问输入直到用户给出int类型输入,我不想在这里使用while循环我想知道在python中是否可以使用raise或assert?像:

a=int(input())
assert type(a)==int
print(a,"hello")

因此,如果用户提供str类型输入,那么程序是否可能继续给出错误并询问新输入,直到输入类型为int。

2 个答案:

答案 0 :(得分:3)

为了制作您自己的例外,您必须创建它。

e.g。

class MyAppLookupError(LookupError):
'''raise this when there's a lookup error for my app'''

要在抛出异常后继续执行,请执行以下操作:

a = 5
try:
    assert a == 5
except AssertionError as e:
    print(e)

try块将尝试执行代码块。如果发生异常,它将执行except块。

答案 1 :(得分:0)

这可能也适用于您的情况。如果布尔输入 Assert()sTxt 并且解释器继续执行,则函数 bCond 以红色打印消息 False

RED, END = '\033[91m', '\033[0m'
printRed = lambda sTxt: print(RED + sTxt + END)
Assert = lambda bCond=False, sTxt='': printRed(sTxt) if not bCond else None