From: Neil H. <ne...@nk...> - 2005-05-30 20:26:31
|
I'm trying to drag myself into the 21st century when it comes to coding, partly though calling all of my old C code through Python (going OK so far) and also by using JDBC along with the ODBC stuff I already know. And what better way to do that than through Jython to help leverage my limited knowledge of Java. It didn't take me long to hit a problem :-) The JDBC driver is for the Pervasive.SQL database and my code performs a simple table query without any problem. I wanted to handle the exceptions that might be returned from the driver in a helpful fashion to the user but my attempts at catching them seem to be failing. A slightly cut-down version of the code so far: ------ import com.ziclix.python.sql as sql import sys from java import net DSN = "jdbc:pervasive://%s" % (sys.argv[1],) try: Id = int(sys.argv[2]) # this can raise a ValueError exception db = sql.zxJDBC.connect(DSN, None, None, "com.pervasive.jdbc.v2.Driver") # this can raise a MalformedURLException cursor = db.cursor() queryString = "SELECT prnqueue_index_no, report_filename, print_device, omega_user_name, error_code FROM sys_prnqueue_table ORDER BY prnqueue_index_no" cursor.execute(queryString) # need to process the rows here cursor.close() db.close() except net.MalformedURLException: print "Error: Invalid or non-existent datasource name" except ValueError: print "Error: Incorrect parameter type used" except Exception, e: print "Pervasive.SQL error:" print e ------- By deliberately passing an illegal second parameter I can raise the ValueError exception, but if I specify an incorrect datasource name (DSN) the exception is not caught by net.MalformedURLException, but by the last except (the one that prints "Pervasive.SQL error:"). If I raise the MalformedURLException myself with the following test code then it works and "Malformed URL" gets printed: -------- from java import net try: for i in range(10): if(i==8): raise net.MalformedURLException else: print i except net.MalformedURLException: print "Malformed URL" except Exception, e: print e -------- So....a Java exception returned from Java code is handled differently than one raised within Jython? I've been Googling and paging through my Jython Essentials book, but I'm missing something. Help! Neil |
From: Diez B. R. <de...@we...> - 2005-05-31 07:53:55
|
Neil Hughes wrote: > I'm trying to drag myself into the 21st century when it comes to coding, > partly though calling all of my old C code through Python (going OK so > far) and also by using JDBC along with the ODBC stuff I already know. And > what better way to do that than through Jython to help leverage my > limited knowledge of Java. > > It didn't take me long to hit a problem :-) > > The JDBC driver is for the Pervasive.SQL database and my code performs a > simple table query without any problem. I wanted to handle the exceptions > that might be returned from the driver in a helpful fashion to the user > but my attempts at catching them seem to be failing. A slightly cut-down > version of the code so far: > > ------ > import com.ziclix.python.sql as sql > import sys > from java import net > > DSN = "jdbc:pervasive://%s" % (sys.argv[1],) > > try: > Id = int(sys.argv[2]) # this can raise a ValueError exception > db = sql.zxJDBC.connect(DSN, None, None, > "com.pervasive.jdbc.v2.Driver") # this can raise a MalformedURLException > cursor = db.cursor() > > queryString = "SELECT prnqueue_index_no, report_filename, > print_device, omega_user_name, error_code FROM sys_prnqueue_table ORDER > BY prnqueue_index_no" > > cursor.execute(queryString) > > # need to process the rows here > > cursor.close() > db.close() > > except net.MalformedURLException: > print "Error: Invalid or non-existent datasource name" > except ValueError: > print "Error: Incorrect parameter type used" > except Exception, e: > print "Pervasive.SQL error:" > print e > ------- > > By deliberately passing an illegal second parameter I can raise the > ValueError exception, but if I specify an incorrect datasource name (DSN) > the exception is not caught by net.MalformedURLException, but by the last > except (the one that prints "Pervasive.SQL error:"). What exactly is catched there? what does the scond print say? > So....a Java exception returned from Java code is handled differently > than one raised within Jython? I've been Googling and paging through my > Jython Essentials book, but I'm missing something. Ususally _not_. Regards, Diez |
From: Neil H. <ne...@nk...> - 2005-05-31 22:13:06
|
On Tue, 31 May 2005 09:53:44 +0200, Diez B. Roggisch wrote: >> By deliberately passing an illegal second parameter I can raise the >> ValueError exception, but if I specify an incorrect datasource name (DSN) >> the exception is not caught by net.MalformedURLException, but by the last >> except (the one that prints "Pervasive.SQL error:"). > What exactly is catched there? what does the scond print say? Sorry...I should have said... Pervasive.SQL error: java.net.MalformedURLException: Data Source Name (DSN) not found in URL Neil |
From: Jeff E. <jem...@fr...> - 2005-05-31 22:32:26
|
zxJDBC throws Python Exceptions that wrap the underlying Java exceptions. Neil Hughes wrote: > On Tue, 31 May 2005 09:53:44 +0200, Diez B. Roggisch wrote: > > >>>By deliberately passing an illegal second parameter I can raise the >>>ValueError exception, but if I specify an incorrect datasource name (DSN) >>>the exception is not caught by net.MalformedURLException, but by the last >>>except (the one that prints "Pervasive.SQL error:"). >> >> What exactly is catched there? what does the scond print say? > > > Sorry...I should have said... > > Pervasive.SQL error: > java.net.MalformedURLException: Data Source Name (DSN) not found in URL > > Neil > > > > ------------------------------------------------------- > This SF.Net email is sponsored by Yahoo. > Introducing Yahoo! Search Developer Network - Create apps using Yahoo! > Search APIs Find out how you can build Yahoo! directly into your own > Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005 > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users |
From: Neil H. <ne...@nk...> - 2005-06-01 14:50:49
|
On Tue, 31 May 2005 16:32:16 -0600, Jeff Emanuel wrote: >zxJDBC throws Python Exceptions that wrap the underlying >Java exceptions. Ah! Thank you. except sql.zxJDBC.DatabaseError, e: print "Database-specific error:" print e If I'd put my thinking cap on I would have taken heed of the DB API 2.0 documentation regarding exceptions and might have worked it out from there. I was too busy looking at the zxJDBC-specific stuff. Neil |