I just checked in code that adds support for java::lang::Throwable and that propagates Java exceptions to python via a wrapping JavaError.


For example:

  from PyLucene import IndexReader, JavaError

  # Try to delete a non-existent document.
  reader = IndexReader.open(store)

  try:
      reader.deleteDocument(0)
  except JavaError, e:
      print e

Andi..


On Thu, 10 Feb 2005, Andi Vajda wrote:


And now to your question :)

Yes, exception reporting needs some work. I've been keeping this in mind and should have a solution soonish. The stack traces are a debugging 'feature' that is rarely usable or available anyway.

I need to change the error reporting so that the various pieces of the exception are segregated so that applications can choose to display whichever they think is relevant.

Andi..

On Thu, 10 Feb 2005, Vaclav Slavik wrote:

Hi,

and the reason for rejection is...?

Thanks,
Vaclav

[EMAIL PROTECTED] wrote:
You are not allowed to post to this mailing list, and your message
has been automatically rejected.  If you think that your messages
are being rejected in error, contact the mailing list owner at
[EMAIL PROTECTED]


Hi,

I'm using PyLucene in Documancer (http://documancer.sf.net) with
great success. There's a small but annoying problem, though: I'm
unable to retrieve human-readable information about QueryParser
exceptions. In Documancer, the user directly enters the query and I
want to display error message when Lucene chokes on it.
Unfortunately I only get a

generic ValueError exception with backtrace being its string:
import PyLucene
PyLucene.QueryParser.parse('*t','c',None)

Traceback (most recent call last): � File "<stdin>", line 1, in ? ValueError: org.apache.lucene.queryParser.ParseException: Lexical error at line 1, column 1. �Encountered: "*" (42), after : "" � �at org.apache.lucene.queryParser.QueryParser.parse(java.lang.String) (/usr/lib/python2.3/site-packages/_PyLucene.so) � �at org.apache.lucene.queryParser.QueryParser.parse(java.lang.String, java.lang.String, org.apache.lucene.analysis.Analyzer) (/usr/lib/python2.3/site-packages/_PyLucene.so) � �at PyCFunction_Call (/usr/lib/libpython2.3.so.1.0) � �at PyEval_EvalCodeEx (/usr/lib/libpython2.3.so.1.0) � �at PyEval_EvalCode (/usr/lib/libpython2.3.so.1.0) � �at PyRun_InteractiveOneFlags (/usr/lib/libpython2.3.so.1.0) � �at PyRun_InteractiveLoopFlags (/usr/lib/libpython2.3.so.1.0) � �at PyRun_AnyFileExFlags (/usr/lib/libpython2.3.so.1.0) � �at Py_Main (/usr/lib/libpython2.3.so.1.0) � �at main (/home/vasek/devel/documancer/code/src/python) � �at __libc_start_main (/lib/libc-2.3.3.so) � �at _start (Unknown Source)

Obviously, the only interesting piece for the user is the part that
corresponds to ParseException.getMessage():
Lexical error at line 1, column 1. �Encountered: "*" (42), after :
""

Would it be hard to modify PyLucene to either not include the
backtrace verbatim as exception's string or to raise distinct
PyLucene.ParseException exception that would contain the message as
its attribute?

Thanks,
Vaclav
--
PGP key: 0x465264C9, available from http://wwwkeys.pgp.net/

_______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev

Reply via email to