Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #37175
| Path | csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Martin Gregorie <martin@address-in-sig.invalid> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Not closing a SQL(ite3) connection |
| Date | Sun, 13 Aug 2017 11:34:18 -0000 (UTC) |
| Organization | A noiseless patient Spider |
| Lines | 60 |
| Message-ID | <ompdfp$4mm$1@dont-email.me> (permalink) |
| References | <87a839um2q.fsf@munus.decebal.nl> <omg0la$1qe3$1@gioia.aioe.org> <874lte1pdj.fsf@munus.decebal.nl> <omli1h$jt7$1@gioia.aioe.org> <slrnootj2q.o2q.avl@logic.at> <87bmnlyrx7.fsf@munus.decebal.nl> <omnqgg$75d$1@dont-email.me> <87h8xcxvux.fsf@munus.decebal.nl> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8 |
| Content-Transfer-Encoding | 8bit |
| Injection-Date | Sun, 13 Aug 2017 11:34:18 -0000 (UTC) |
| Injection-Info | mx02.eternal-september.org; posting-host="70f7f9b9062e6e503a07259b35ef79a7"; logging-data="4822"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Zzd7p0GrnE7RLoT4sp955eT809/DwFBo=" |
| User-Agent | Pan/0.141 (Tarzan's Death; 168b179 git.gnome.org/pan2) |
| Cancel-Lock | sha1:OxFqbyli1NXFYPVUZMyzhsmWZiM= |
| Xref | csiph.com comp.lang.java.programmer:37175 |
Show key headers only | View raw
On Sun, 13 Aug 2017 00:30:14 +0200, Cecil Westerhof wrote:
> Martin Gregorie <martin@address-in-sig.invalid> writes:
>
>> On Sat, 12 Aug 2017 12:57:40 +0200, Cecil Westerhof wrote:
>>
>>> The String will be done with a variable of-course. Beside that: is the
>>> code OK, or can it be improved?
>>>
>> The main one is that with most JDBC drivers, the SQLException that
>> try...catch intercepts is merely the first SQLEXception in a chain of
>> SQLExceptions. You miss a lot of information about what went wrong by
>> not repeatedly calling the current SQLException's getNextException()
>> method until all members of the chain have been retrieved and their
>> contents displayed. Alternatively, call SQLException.iterator and use
>> that to iterate through the SQLException chain.
>>
>> If the SQL query was at all complex then the first exception in the
>> chain may not be particularly helpful because what caused the query to
>> fail is described further down the chain.
>
> On a tip from Arne I already changed the code to:
> @Override public void close() throws SQLException {
> Statement stmt;
>
> if (isClosed) {
> throw new SQLException("SQLResultSet is already closed.");
> }
> stmt = resultSet.getStatement();
> resultSet.close();
> stmt.close();
> isClosed = true;
> }
>
> That solves this problem?
No, not really: the chain of SQLExceptions can be quite similar in
content to a stack trace in that the first one or two exceptions just say
that an error was encountered but not what caused it: you have to look
further down the chain to see what actually failed, causing the first few
entries in the chain to report failure. You need to look at the whole
chain to work out what caused the error, which may be at the DB schema
level, i.e. not necessarily a problem in the application code, but rather
a mismatch between the application's requirements and the DB schema.
In fairly complex non-interactive applications I tend to make the
application classes/methods further up the stack than JDBC operations
rethrow SQLExceptions, only catching them in main() and making that catch
report the entire SQLException chain before terminating the application.
This works because in well-designed and debugged JDBC applications the
SQLEXception chain will be reporting failures at the level of the JDBC's
RDBMS-specific driver or below. During unit testing and debugging it also
gives you almost exactly what you need to unambiguously locate the error,
especially if your catch code also dumps a stacktrace.
--
martin@ | Martin Gregorie
gregorie. | Essex, UK
org |
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-09 11:28 +0200
Re: Not closing a SQL(ite3) connection Arne Vajhøj <arne@vajhoej.dk> - 2017-08-09 18:00 -0400
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-11 10:26 +0200
Re: Not closing a SQL(ite3) connection Arne Vajhøj <arne@vajhoej.dk> - 2017-08-11 20:27 -0400
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-12 10:00 +0200
Re: Not closing a SQL(ite3) connection Andreas Leitgeb <avl@logic.at> - 2017-08-12 08:51 +0000
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-12 11:05 +0200
Re: Not closing a SQL(ite3) connection Arne Vajhøj <arne@vajhoej.dk> - 2017-08-12 09:52 -0400
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-12 16:26 +0200
Re: Not closing a SQL(ite3) connection Arne Vajhøj <arne@vajhoej.dk> - 2017-08-12 21:43 -0400
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-15 08:19 +0200
Re: Not closing a SQL(ite3) connection lewbloch@gmail.com - 2017-08-12 10:14 -0700
Re: Not closing a SQL(ite3) connection Andreas Leitgeb <avl@logic.at> - 2017-08-12 09:33 +0000
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-12 12:57 +0200
Re: Not closing a SQL(ite3) connection Andreas Leitgeb <avl@logic.at> - 2017-08-12 13:27 +0000
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-12 16:37 +0200
Re: Not closing a SQL(ite3) connection Arne Vajhøj <arne@vajhoej.dk> - 2017-08-12 09:55 -0400
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-12 16:44 +0200
Re: Not closing a SQL(ite3) connection Arne Vajhøj <arne@vajhoej.dk> - 2017-08-12 21:45 -0400
Re: Not closing a SQL(ite3) connection Martin Gregorie <martin@address-in-sig.invalid> - 2017-08-12 21:04 +0000
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-13 00:30 +0200
Re: Not closing a SQL(ite3) connection Martin Gregorie <martin@address-in-sig.invalid> - 2017-08-13 11:34 +0000
Re: Not closing a SQL(ite3) connection Cecil Westerhof <Cecil@decebal.nl> - 2017-08-13 15:27 +0200
Re: Not closing a SQL(ite3) connection Andreas Leitgeb <avl@logic.at> - 2017-08-12 13:06 +0000
csiph-web