Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果没有版本检查或'six',我如何使用'except MyError,e:'vs'except MyError as e',使用Python 2&;3._Python_Python 3.x_Error Handling_Python 2.5_Backport - Fatal编程技术网

如果没有版本检查或'six',我如何使用'except MyError,e:'vs'except MyError as e',使用Python 2&;3.

如果没有版本检查或'six',我如何使用'except MyError,e:'vs'except MyError as e',使用Python 2&;3.,python,python-3.x,error-handling,python-2.5,backport,Python,Python 3.x,Error Handling,Python 2.5,Backport,我正在寻找一种不用检查使用的Python版本就可以做到这一点的方法 有关此问题的详细信息,请参阅,因为此问题扩展了该问题 基本上,我可以将其概括为“如果基于方法的异常引发基于语言的异常怎么办?” 根据,下面显示了Python 3和Python 2的正确语法: Python 3: except MyError as e Python 2,对于版本2.6+: except MyError as e #OR# except MyError, e Python 2.5-: except My

我正在寻找一种不用检查使用的Python版本就可以做到这一点的方法

有关此问题的详细信息,请参阅,因为此问题扩展了该问题

基本上,我可以将其概括为“如果基于方法的异常引发基于语言的异常怎么办?”

根据,下面显示了Python 3和Python 2的正确语法:

Python 3:

except MyError as e
Python 2,对于版本2.6+:

except MyError as e
    #OR#
except MyError, e
Python 2.5-:

except MyError, e
一点背景:

我遇到了一个棘手的情况,脚本需要在许多古老的Linux机器上运行,其中将使用各种不同的Python版本,包括Python 2.5

不幸的是,我不得不将其作为一个单一的、大小有限的文件分发,这对我可以执行的导入量造成了一些限制


另外,我对其中一个可能误传其版本的情况感兴趣,或者对不必检查版本就可以使用的代码感兴趣。当然,这是可以解决的

您唯一的选择是避免异常分配,并将其从结果中拉出来,取而代之的是:

这将适用于Python1.5及更高版本


但是,您可能会遇到其他不兼容和困难;编写多语言Python代码(同时适用于Python2.x和3.x的代码)只有在Python2.6和更高版本上才真正可行。

您真的需要支持Python2.5吗?然后检查
six
的源代码,看看它们能做些什么。检查Python运行的版本(通常包括一个示例行和捕获一个异常)并不意味着使用两组不同的源代码。而且,在2.0版中表现良好。使用它。//,为什么要这样做?另外,如果你解释为什么所有明显的事情都不适合你,你可能会发现你的需求会受到更少的阻碍。@Nathanbassanese:你能不能不要那样做,那就是
/
的事情?没有必要这样做,而且会极大地分散注意力。@NathanBasanese:因为这样会分散谈话的注意力。在Stack上遇到的每个人都会问你这件事。一次又一次,因为它像一个受伤的拇指一样突出。你不想让人们把注意力集中在你的问题上吗?/,这太完美了。我担心,我所处的这种情况在“企业”发展中相当普遍。
try:
    # ...
except Exception:  # note, no ", e" or "as e"
    import sys
    e = sys.exc_info()[1]