为什么不例外工作?

时间:2013-12-10 16:13:03

标签: python unit-testing exception-handling

我有一个python代码,我想引发异常:

def main():
    try:
        if testfile == 'testfile':
            write_file(create_output())
            print_file()
            return 0
    except:
        return 1

即使testfile!='testfile'函数没有返回1.为什么?

4 个答案:

答案 0 :(得分:3)

根据你的最后一句判断,我认为你实际上想在这里使用if/else

def main():
    if testfile == 'testfile':
        write_file(create_output())
        print_file()
        return 0
    else:
        return 1

try/except用于捕获/处理错误,而不是根据条件执行某项操作。这就是if/else的用途。

答案 1 :(得分:2)

你没有提出任何异常。您只是处理可能引发的任何异常。如果您决定通过例外处理此问题,请尝试使用assert。如果AssertionError不等于testfile

,这会引发'testfile'
def main():
    try:
        assert testfile == 'testfile'
        write_file(create_output())
        print_file()
        return 0
    except:
        return 1

否则,正如iCodez指出的那样,在这种情况下使用if/else更合适。

答案 2 :(得分:0)

可能你并不了解异常是什么以及什么时候被引发。 两个字符串之间的比较将返回一个布尔值,它不会引发异常。 例外是错误。如果testfile!=' testfile'你不会在代码中出错,而只是一个False的条件语句。 我建议你阅读一些documentation

答案 3 :(得分:0)

为了引发异常,必须先抛出异常。在上面的代码块中,除非write_file或print_file引发异常,否则不会发生。你想要if / else返回1.如果这是testfile =='testfile,做一些事情,否则返回1.