Why is else clause needed for try statement in python?
本问题已经有最佳答案,请猛点这里访问。
在python中,try语句支持else子句,该子句在try块中的代码不引发异常时执行。例如:
1 2 3 4 5 6 7 8 | try: f = open('foo', 'r') except IOError as e: error_log.write('Unable to open foo : %s ' % e) else: data = f.read() f.close() |
为什么需要else子句?我们不能把上面的代码写下来吗?
1 2 3 4 5 6 7 | try: f = open('foo', 'r') data = f.read() f.close() except IOError as e: error_log.write('Unable to open foo : %s ' % e) |
如果open不引发异常,执行是否会继续执行
不同的是,如果在f.read()或f.close()代码中出现错误,会发生什么。在这种情况下:
1 2 3 4 5 6 7 | try: f = open('foo', 'r') data = f.read() f.close() except IOError as e: error_log.write('Unable to open foo : %s ' % e) |
在这种情况下,
在这种情况下,可以避免:
1 2 3 4 5 6 7 8 | try: f = open('foo', 'r') except IOError as e: error_log.write('Unable to open foo : %s ' % e) else: data = f.read() f.close() |
读取或关闭时出错不会导致日志写入,但错误会在调用堆栈中不匹配地向上增加。
使用
据我所知,
@约翰:我认为像Java这样的语言,或者其他语言,你有不同的例外。例如,像fileNotFound异常(或者类似的情况,我不确定名称)。这样,您就可以处理不同的异常并相应地采取行动。然后您就知道为什么会发生错误了,因为打开或关闭了。