Python是否具有Java等效的throw new Exception("text here")

Kyl*_*ine 5 python exception

我是一名Java开发人员,他是Python的新手,我将Java类重写为Python类.我试图尽可能地模仿Python类中原始类的流程.Java类有几行,

    if(condition)
       throw new Exception("text here")
Run Code Online (Sandbox Code Playgroud)

我一直在查看Python文档中的异常,并且无法找到与Java语法等效的Python.

我已经raise Exception("text here")通过阅读这个StackOverflow帖子尝试了一些东西(我认为很接近),但似乎这是在try except块中使用并且会导致从try块跳转到except块; 而我正试图避免try except阻塞而只是抛出异常.

我认为可行的解决方案是这样的,

    try:
        if(condition):
           raise Exception("text here")
    except:
        ...
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种 Java 方法更密切相关的方法,以便我可以尽可能多地维护流程(让它们看起来相似).

小智 5

异常处理可能是Python的一个非常重要的方面,它在语法和语义方面与Java相差最小.这真的很公正raise Exception("text here").不,它不必在一个try块内有词法.与在Java中一样,它向上传播调用堆栈,直到它最终遇到一个try块(带有匹配except子句),或者如果没有这样的块,它会终止程序并输出错误消息.


Man*_*eli 2

忘记尝试,如果没有它,你的代码将完全相同

正如其他人指出的那样:这会抛出(并且不会捕获或处理异常):

condition = "Foo"
if(condition is "Foo"):
      raise Exception("FooException")
Run Code Online (Sandbox Code Playgroud)

但是,如果您想像抛出 java 方法一样处理它,那么:

正如本文档中所解释的,您将通过方法抛出它们,然后您所要做的就是尝试该方法,而不是方法中的每个条件。

#!/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()
Run Code Online (Sandbox Code Playgroud)