Does Python have a Java equivalent of throw new Exception(“text here”)
我是一个Java开发人员,对Python是新手,我正在把一个Java类改写为Python类。我正在尽可能地模拟Python类中原始类的流。Java类有几行,
1 2 | if(condition) throw new Exception("text here") |
我一直在查看Python文档中的异常情况,但找不到与Java语法等价的Python。
我通过阅读这个stackoverflow post尝试过(我认为很接近)使用
我认为一个可行的解决办法是,
1 2 3 4 5 | try: if(condition): raise Exception("text here") except: ... |
但我想知道是否有一种与Java方法更紧密相关的方法,以便我可以尽可能多地维护流程(让它们看起来很相似)。
异常处理可能是Python的一个非平凡方面,它在语法和语义上与Java不同。这真的只是
忘记尝试,如果没有它,您的代码将完全等效。
正如其他人指出的:这个抛出(不捕获或处理异常):
1 2 3 | condition ="Foo" if(condition is"Foo"): raise Exception("FooException") |
但是,如果您想处理它,如果您抛入Java方法,那么:
如本文所述,您将通过一个方法抛出它们,然后您所要做的就是尝试该方法,而不是方法中的每个条件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/usr/local/bin/python2.7 def foo(num): if (num == 2): raise Exception("2Exception") if (num == 3): raise Exception("Numception") def handleError(e): print(e) def main(): try: foo(3) print("no errors") except Exception, e: handleError(e) if __name__ =="__main__": main() |
1 | raise StandardError("message") |
在任何地方都是完全有效的代码。实际上,在try/except块中引发异常通常只是为了显示案例错误处理。在同一个函数中引发和处理异常实际上没有意义。
如果您不想捕获异常,那么这可能是您想要的:
1 2 | if condition: raise Exception("something bad happened!") |
如果您确实想捕获异常,那么可以使用Python的try/except。
1 2 | if (condition): raise Exception("test") |
会实现你想要的。试一试。