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



我正在学习python中的Exception,我有一些疑问:

可以使用任何名字作为raise中的error吗?

就像我读过的,当你使用raise时,你必须定义错误类型,所以我不能使用任何stringname作为错误?像SkienaError或者我必须记住所有的错误类型,必须只使用那些错误类型名称?

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

第二个疑问是假设我希望用户应该输入int,但他输入字符串,所以断言弹出,但我希望程序应该继续没有终止,并再次要求输入,直到用户给出int类型的输入,我不想在这里使用while循环,我想知道它是否可能与raise或断言在python ?如:

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

所以如果用户输入str类型,那么程序是否可能一直给出错误并要求新的输入,直到输入类型为int。

为了创建自己的异常,您必须创建它。

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

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

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

相关内容

最新更新