在Jython或Sikuli中返回zxJDBC错误?

在Jython或Sikuli中返回zxJDBC错误?,jdbc,jython,sikuli,Jdbc,Jython,Sikuli,我在返回zxJDBC错误时遇到问题(具体来说,我与MySQL的连接由于网络问题而中断,这导致我的程序崩溃/挂起),但老实说,我不知道Jython中有多少返回.jar错误。在Jython的这次冒险之前,我的大部分编程经验在过去仅限于BASH和Perl。 我想做的是返回所有zxJDBC错误,这样我就可以识别并编写try/except来处理那些我可以处理的错误 有关守则如下: ########################################################## # fr

我在返回zxJDBC错误时遇到问题(具体来说,我与MySQL的连接由于网络问题而中断,这导致我的程序崩溃/挂起),但老实说,我不知道Jython中有多少返回.jar错误。在Jython的这次冒险之前,我的大部分编程经验在过去仅限于BASH和Perl。 我想做的是返回所有zxJDBC错误,这样我就可以识别并编写try/except来处理那些我可以处理的错误

有关守则如下:

##########################################################
# from http://forum.java.sun.com/thread.jspa?threadID=300557
#
# Author: SG Langer Jan 2007 translated the above Java to this
#       Jython class
# Purpose: Allow runtime additions of new Class/jars either from
#       local files or URL
######################################################
class classPathHacker(object):
import java.lang.reflect.Method
import java.io.File
import java.net.URL
import java.net.URLClassLoader
def addFile(self, s):
    f = self.java.io.File(s)
    u = f.toURL()
    a = self.addURL(u)
    return a
def addURL(self, u):
    sysloader = self.java.lang.ClassLoader.getSystemClassLoader()
    sysclass = self.java.net.URLClassLoader
    method = sysclass.getDeclaredMethod("addURL", [self.java.net.URL])
    a = method.setAccessible(1)
    jar_a = jarray.array([u], self.java.lang.Object)
    b = method.invoke(sysloader, [u])
    return u

tmp = classPathHacker()
tmp.addFile("/opt/sikuli/libs/mysql-connector-java-5.1.29-bin.jar")
from com.ziclix.python.sql import zxJDBC
db = zxJDBC.connect("jdbc:SERVER/DATABASE", "USER", "PASSWORD", "com.mysql.jdbc.Driver", CHARSET='iso_1')
b = db.cursor()
b.execute("SOME_SQL_CODE_GOES_HERE")
for row in b:
    data = str(row)
    <DO IRRELEVANT THINGS WITH SQL RETURN>
b.close()
db.close()
##########################################################
#从http://forum.java.sun.com/thread.jspa?threadID=300557
#
#作者:SG Langer 2007年1月将上述Java翻译成
#杰顿班
#目的:允许在运行时从
#本地文件或URL
######################################################
类classPathHacker(对象):
导入java.lang.reflect.Method
导入java.io.xml文件
导入java.net.URL
导入java.net.URLClassLoader
def添加文件(自身):
f=self.java.io.File
u=f.toURL()
a=self.addURL(u)
归还
def addURL(self,u):
sysloader=self.java.lang.ClassLoader.getSystemClassLoader()
sysclass=self.java.net.URLClassLoader
method=sysclass.getDeclaredMethod(“addURL”,[self.java.net.URL])
a=方法。setAccessible(1)
jar_a=jarray.array([u],self.java.lang.Object)
b=方法.invoke(sysloader[u])
返回u
tmp=classPathHacker()
tmp.addFile(“/opt/sikuli/libs/mysql-connector-java-5.1.29-bin.jar”)
从com.ziclix.python.sql导入zxJDBC
db=zxJDBC.connect(“jdbc:SERVER/DATABASE”、“USER”、“PASSWORD”、“com.mysql.jdbc.Driver”、CHARSET='iso_1')
b=db.cursor()
b、 执行(“这里有一些SQL代码”)
对于b中的行:
数据=str(行)
b、 关闭()
db.close()
如何构造代码以捕获错误/异常


我怀疑对于那些了解足够Java的人来说,有一些有价值的信息可以将其翻译成Jython

缺少的是try&except调用

基于上述情况,如果需要,可以调用特定的异常,但其他情况下,所有异常都可以返回:

##########################################################
# from http://forum.java.sun.com/thread.jspa?threadID=300557
#
# Author: SG Langer Jan 2007 translated the above Java to this
#       Jython class
# Purpose: Allow runtime additions of new Class/jars either from
#       local files or URL
######################################################
class classPathHacker(object):
import java.lang.reflect.Method
import java.io.File
import java.net.URL
import java.net.URLClassLoader
def addFile(self, s):
    f = self.java.io.File(s)
    u = f.toURL()
    a = self.addURL(u)
    return a
def addURL(self, u):
    sysloader = self.java.lang.ClassLoader.getSystemClassLoader()
    sysclass = self.java.net.URLClassLoader
    method = sysclass.getDeclaredMethod("addURL", [self.java.net.URL])
    a = method.setAccessible(1)
    jar_a = jarray.array([u], self.java.lang.Object)
    b = method.invoke(sysloader, [u])
    return u

tmp = classPathHacker()
tmp.addFile("/opt/sikuli/libs/mysql-connector-java-5.1.29-bin.jar")
from com.ziclix.python.sql import zxJDBC
db = zxJDBC.connect("jdbc:SERVER/DATABASE", "USER", "PASSWORD", "com.mysql.jdbc.Driver", CHARSET='iso_1')
try:
    b = db.cursor()
    b.execute("SOME_SQL_CODE_GOES_HERE")
    for row in b:
        data = str(row)
        <DO IRRELEVANT THINGS WITH SQL RETURN>
    b.close()
    db.close()
except:
    print("%s - [ERROR] %s \n" % (datetime.datetime.fromtimestamp(time.time()).strftime('%m-%d-%Y 5H:%M:%S'), sys.exc_info()[1]))
##########################################################
#从http://forum.java.sun.com/thread.jspa?threadID=300557
#
#作者:SG Langer 2007年1月将上述Java翻译成
#杰顿班
#目的:允许在运行时从
#本地文件或URL
######################################################
类classPathHacker(对象):
导入java.lang.reflect.Method
导入java.io.xml文件
导入java.net.URL
导入java.net.URLClassLoader
def添加文件(自身):
f=self.java.io.File
u=f.toURL()
a=self.addURL(u)
归还
def addURL(self,u):
sysloader=self.java.lang.ClassLoader.getSystemClassLoader()
sysclass=self.java.net.URLClassLoader
method=sysclass.getDeclaredMethod(“addURL”,[self.java.net.URL])
a=方法。setAccessible(1)
jar_a=jarray.array([u],self.java.lang.Object)
b=方法.invoke(sysloader[u])
返回u
tmp=classPathHacker()
tmp.addFile(“/opt/sikuli/libs/mysql-connector-java-5.1.29-bin.jar”)
从com.ziclix.python.sql导入zxJDBC
db=zxJDBC.connect(“jdbc:SERVER/DATABASE”、“USER”、“PASSWORD”、“com.mysql.jdbc.Driver”、CHARSET='iso_1')
尝试:
b=db.cursor()
b、 执行(“这里有一些SQL代码”)
对于b中的行:
数据=str(行)
b、 关闭()
db.close()
除:
打印(“%s-[ERROR]%s\n”%(datetime.datetime.fromtimestamp(time.time()).strftime(“%m-%d-%Y 5H:%m:%s”),sys.exc_info()[1]))
这将导致打印错误,看起来像“07-03-2014 12:10:39-[error]cursor is closed”,可以从那里进一步调试

答案基于的官方网页

PS-抱歉回答我自己的问题-不确定这样做是否不好;但是,由于我找不到另一个有类似问题的页面,我想其他人可能会喜欢这些信息