我正在学习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
块
这可能也适用于您的情况。如果布尔输入的bCond
为False
,则函数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