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 时,它总是显示无效网站。请输入另一项。如何修复它退出程序?其他一切都有效,只是这一部分。
最佳答案
sys.exit
函数通过引发 SystemExit
异常来工作。您的代码有一个裸露的 except
block ,它捕获该异常并抑制其正常目的(即安静退出)。
解决此问题的最佳方法是使您的 except
子句更具体地了解您希望捕获的异常类型。捕获所有异常几乎总是是一个坏主意(唯一的异常(exception)是当您捕获所有异常,但记录并重新引发大多数异常时)。
由于您的特定代码正在尝试处理来自 urllib
的异常,因此捕获 urllib.error.URLError
可能是您最好的选择。
关于python - 当我输入 no 时,它无法正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843393/