在Jython中捕获java异常

问题描述 投票:1回答:1

我有一个例外,我试图捕获每当我的VNC连接被杀死(每当我重新启动我的VM)并且我试图忽略它以继续我的Jython脚本。我不确定如何编写try catch语句来捕获异常,因为它来自Java。这是一个sikuliX脚本。

Exception in thread "Thread-7" com.tigervnc.rdr.EndOfStream: EndOfStream
        at com.tigervnc.rdr.FdInStream.readWithTimeoutOrCallback(FdInStream.java:192)
        at com.tigervnc.rdr.FdInStream.overrun(FdInStream.java:142)
        at com.tigervnc.rdr.InStream.check(InStream.java:37)
        at com.tigervnc.rdr.InStream.check(InStream.java:44)
        at com.tigervnc.rdr.InStream.check(InStream.java:45)
        at com.tigervnc.rdr.InStream.readS8(InStream.java:55)
        at com.tigervnc.rdr.InStream.readU8(InStream.java:64)
        at com.tigervnc.rfb.CMsgReaderV3.readMsg(CMsgReaderV3.java:50)
        at com.tigervnc.rfb.CConnection.processMsg(CConnection.java:67)
        at org.sikuli.vnc.VNCClient.processMessages(VNCClient.java:246)
        at org.sikuli.vnc.VNCScreen$1.run(VNCScreen.java:82)
        at java.lang.Thread.run(Unknown Source)
java python jython sikuli
1个回答
0
投票

正如Exception Handling and Debugging中所解释的,您在Jython中处理Java异常的方式与处理Python异常的方式相同:

如前所述,Jython中的常见做法是处理Java异常。通常我们有一个抛出异常的Java类,这些可以在Jython中处理或显示,就像处理Python异常一样。

就代码而言,Java异常只是某个Exception子类的实例。

当然,这个子类碰巧存在,例如,java.lang而不是内置或另一个stdlib模块,并且它(几乎?)总是将java.lang.Exception作为中间祖先,然后一直回到Exception,但一般情况下,你不会关心那个。

所以,无论你在哪里调用抛出这个异常的Java代码......只需要放置一个try: / except Exception as e:except java.lang.Exception as e:或更具体的类型,就像调用Python代码一样。

© www.soinside.com 2019 - 2024. All rights reserved.