Feature #1604
Allow to raise GException from cscripts
| Status: | Closed | Start date: | ||
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assigned To: | % Done: | 0% | ||
| Category: | - | |||
| Target version: | - | |||
| Duration: |
Description
I realised that the following code doesn’t work:
import gammalib
raise gammalib.GException.invalid_argument("","")
The error message is:
Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'GException'
It seems the class GException is not available from python. Nevertheless, we use this exception call quite frequently in cscripts. This hasn’t been a problem so far. We should however implement this properly but I am not entirely sure how to do that. Any ideas?
Recurrence
No recurrence.
History
#1
Updated by Mayer Michael about 10 years ago
Quick workaround for the moment could be to change
raise gammalib.GException(origin,msg)
to
raise RuntimeError(msg)
#2
Updated by Knödlseder Jürgen about 10 years ago
Indeed, I never checked this properly.
C++ exceptions are in fact translated into Python exceptions using the following SWIG declaration that is added to all the GammaLib wrapper scripts:
%exception {
try {
$action
}
catch (const GException::out_of_range& e) {
SWIG_exception(SWIG_IndexError, e.what());
}
catch (const GExceptionHandler& e) {
SWIG_exception(SWIG_RuntimeError, e.what());
}
catch (const std::exception& e) {
SWIG_exception(SWIG_RuntimeError, e.what());
}
}
This means that basically all exceptions show up as Python run time errors. I would therefore support using
raise RuntimeError(msg)within the
cscripts.#3
Updated by Mayer Michael about 10 years ago
- Status changed from New to Pull request
- Assigned To set to Mayer Michael
I have made the changes on branch 1604-Gexceptions-in-cscripts.
#4
Updated by Knödlseder Jürgen about 10 years ago
- Status changed from Pull request to Closed
Merged into devel