import webbrowser
import time
import sys
import urllib.request
def con():
cont = input("Do you want to continue? ")
if (cont.lower() == "yes" or cont.lower() == "y"):
main()
elif (cont.lower() == "no" or cont.lower() == "n"):
sys.exit()
else:
print("Invalid answer. Please try again")
time.sleep(1)
con()
def main():
try:
website = input("What website do you want to go to? (ex. Example.com) ")
fWebsite = "http://{}".format(website)
time.sleep(1)
if (urllib.request.urlopen(fWebsite).getcode() == 200):
webbrowser.open(fWebsite)
time.sleep(1)
except:
print("Invalid website. Please enter another one")
time.sleep(1)
main()
con()
main()
当代码运行con()时,每当我尝试输入no时,总是显示无效的网站。请输入另一个。如何修复退出程序?其他所有工作都只是这一部分。
答案 0 :(得分:1)
sys.exit
函数通过引发SystemExit
异常来工作。您的代码有一个裸露的except
块,该块正在捕获该异常并抑制了其正常用途(即,安静地退出)。
此问题的最佳解决方案是使您的except
子句更加针对您希望捕获的异常类型。捕获所有内容几乎总是一个错误的主意(唯一的例外是,当您捕获所有异常,但记录并重新引发其中的大多数异常时)。
由于您的特定代码试图处理来自urllib
的异常,因此捕获urllib.error.URLError
可能是您的最佳选择。