我有一个python代码,我想引发异常:
def main():
try:
if testfile == 'testfile':
write_file(create_output())
print_file()
return 0
except:
return 1
即使testfile!='testfile'函数没有返回1.为什么?
答案 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.