我在如何结束“ try”循环时遇到了麻烦,这是因为我有了“ try”,这是代码:
import time
class exe_loc:
mem = ''
lib = ''
main = ''
def wizard():
while True:
try:
temp_me = input('Please specify the full directory of the memory, usually it will be a folder called "mem"> ' )
if temp_me is True:
exe_loc.mem = temp_me
time.sleep(1)
else:
print('Error value! Please run this configurator again!')
sys.exit()
temp_lib = input('Please specify the full directory of the library, usually it will be a folder called "lib"> ')
if temp_lib is True:
exe_loc.lib = temp_lib
time.sleep(1)
else:
print('Invalid value! Please run this configurator again!')
sys.exit()
temp_main = input('Please specify the full main executable directory, usually it will be app main directory> ')
if temp_main is True:
exe_loc.main = temp_main
time.sleep(1)
我尝试通过使用break
,pass
结束它,甚至将其空出Unexpected EOF while parsing
,我在网上搜索,他们说这是由于代码块引起的尚未完成。如果我的代码有误,请告诉我。
顺便说一句,我使用的是python 3,我不知道该问题的具体方式,请问我是否理解。对不起,我英语不好。
编辑:通过删除try
可以解决此问题,因为我没有使用它,但是我仍然想知道如何正确结束try
循环,谢谢。
答案 0 :(得分:2)
您还必须使用except
语句“捕获”异常,否则尝试没有用。
因此,如果您执行以下操作:
try:
# some code here
except Exception:
# What to do if specified error is encountered
这样,如果您在try块中的任何地方引发了异常,它都不会破坏您的代码,但会被您的except捕获。
答案 1 :(得分:2)
您的问题不是break
,而是您的try
子句的总体高级形式。
try
需要一个except
或一个finally
块。您都没有,这意味着您的try
子句从未真正完成。因此python一直在寻找下一个比特,直到到达EOF(文件结束)为止,然后抱怨。
python docs进行了更详细的说明,但是基本上您需要:
try:
do_stuff_here()
finally:
do_cleanup_here() # always runs, even if the above raises an exception
或
try:
do_stuff_here()
except SomeException:
handle_exception_here() # if do_stuff_here raised a SomeException
(您也可以同时拥有except
和finally
。)如果您既不需要清理也不需要异常处理,那就更容易了:完全删除try
,并将该块直接放在该while True
的下面。
最后,作为术语,try
不是循环。循环是多次执行的少量代码-循环。 try
被执行一次。这是一个“子句”,而不是一个“循环”。