Python 2.7 在Python脚本(2.7.8)中是否可以引发/处理两次异常

Python 2.7 在Python脚本(2.7.8)中是否可以引发/处理两次异常,python-2.7,exception,exception-handling,Python 2.7,Exception,Exception Handling,为了好玩,我正在开发一个程序,它告诉我我和另一个人在同一时间玩了多少次特定的游戏。有三个单独的目录可以找到聊天日志(我从中提取用户名)。我正在使程序多样化,足以在其他人的机器上工作,这意味着他们必须手动输入所有3个区域的目录。这就是我的问题所在:如果两次引发(并处理)OSError会发生什么 在当前时刻,当我测试程序时,我为3个中的第一个输入了一个无效路径,程序打印一条消息,告诉我它无效(因此OSError已被处理);但是,当我对3条路径中的第2条路径执行相同操作时,不会打印消息。但我不知道为什

为了好玩,我正在开发一个程序,它告诉我我和另一个人在同一时间玩了多少次特定的游戏。有三个单独的目录可以找到聊天日志(我从中提取用户名)。我正在使程序多样化,足以在其他人的机器上工作,这意味着他们必须手动输入所有3个区域的目录。这就是我的问题所在:如果两次引发(并处理)OSError会发生什么

在当前时刻,当我测试程序时,我为3个中的第一个输入了一个无效路径,程序打印一条消息,告诉我它无效(因此OSError已被处理);但是,当我对3条路径中的第2条路径执行相同操作时,不会打印消息。但我不知道为什么。事实上,我不确定我是否测试了在三条路径中的第一条路径中输入两条无效路径,以查看它是否每次都打印消息,但我想我测试过了,它确实打印了。是否有任何方法可以确保消息始终打印出来,无论消息已被提出多少次,对于所有3个选项

编辑:我刚刚意识到我去掉了except语句中的“OSError”部分(但我不认为这对这个问题太重要了?),忘了提到我是在Windows7电脑上,以防万一

我的代码(有用的部分):


异常在
except
子句中处理,您可以使用
raise
重新引发异常,但一旦到达处理异常的
except
子句,除非您使用
raise
退出块,否则异常被视为已处理并消失,因此以后的
except
子句不会处理异常。此外,异常仅由包含
try
..
except
子句处理,如果要在后面的子句中捕获它,则需要将整个先前的
try
包含在其中。谢谢,我重新安排了一些内容,现在它可以正常工作了。很高兴能多了解一下
try
语句的细节,除了
语句。再次感谢你,@Petesh
while True:
    try:
        SteamDirec = raw_input("Please enter the directory for steam KAG logs (ends in \Logs).\nEnter 'none' if you do not have steam KAG: ")
        if SteamDirec.lower() == 'none':
            break
        else:
            #SteamKAG(SteamDirec) commented out, not useful here
            break
    except:
        print "\nInvalid directory. Ensure the directory is correct and try again.\n"

while True:
    try:
        NonSteamDirec = raw_input("\nPlease enter the directory for non-steam KAG (release) logs (ends in \Logs).\nEnter 'none' if you do not have non-steam KAG (release): ")
        if NonSteamDirec.lower() == 'none':
            break
        else:
            #NonSteamKAG(NonSteamDirec) commented out, not useful here
            break
    except:
        print "\nInvalid directory. Ensure the directory is correct and try again.\n"

while True:
    try:
        ClassicDirec = raw_input("\nPlease enter the directory for Classic KAG logs (ends in \Logs).\nEnter 'none' if you do not have Classic KAG: ")
        if ClassicDirec.lower() == 'none':
            break
        else:
            #ClassicKAG(ClassicDirec) commented out, not useful here
            break
    except:
        print "\nInvalid directory. Ensure the directory is correct and try again.\n"