请大神看看错误在哪里?
请问下面的代码为什么在抛出异常以后,不能继续执行try对应的代码呢?class invalidcharError(Exception):
pass
class NotChinatelError(Exception):
pass
def register():
tel = input('请输入您的电话号码:')
if not tel.isdigit():
raise invalidcharError
if not tel.startswith('86'):
raise NotChinatelError
return tel
try:
register()
except invalidcharError:
print('电话号码不全是数字')
except NotChinatelError:
print('非中国电话号码') 在代码中,抛出异常后没有被捕获,因此程序会中止运行。在这种情况下,需要将抛出异常的代码包含在try语句块中,以便在异常抛出时能够被捕获。修改后的代码如下:
class invalidcharError(Exception):
pass
class NotChinatelError(Exception):
pass
def register():
tel = input('请输入您的电话号码:')
try:
if not tel.isdigit():
raise invalidcharError
if not tel.startswith('86'):
raise NotChinatelError
except invalidcharError:
print('电话号码不全是数字')
except NotChinatelError:
print('非中国电话号码')
return tel
register()
在这个修改后的代码中,当抛出异常时,程序会跳转到对应的except语句块中,然后继续执行try语句块中的代码。 isdkz 发表于 2023-9-26 14:13
在代码中,抛出异常后没有被捕获,因此程序会中止运行。在这种情况下,需要将抛出异常的代码包含在try语句 ...
复制了您的代码,可问题依然存在。 子飞鱼 发表于 2023-9-26 14:18
复制了您的代码,可问题依然存在。
class invalidcharError(Exception):
pass
class NotChinatelError(Exception):
pass
def register():
tel = input('请输入您的电话号码:')
if not tel.isdigit():
raise invalidcharError
if not tel.startswith('86'):
raise NotChinatelError
return tel
while True:
try:
register()
break
except invalidcharError:
print('电话号码不全是数字')
except NotChinatelError:
print('非中国电话号码')
页:
[1]