How to catch a usefull error message ?
Chris Angelico
rosuav at gmail.com
Tue Apr 23 14:54:44 EDT 2019
On Wed, Apr 24, 2019 at 4:51 AM Vincent Vande Vyvre
<vincent.vande.vyvre at telenet.be> wrote:
>
> Le 23/04/19 à 19:27, MRAB a écrit :
> > On 2019-04-23 10:56, Vincent Vande Vyvre wrote:
> >> Hi,
> >>
> >> In a CPython lib I have an _init() method wich take one argument, a file
> >> name.
> >>
> >> char *fname;
> >>
> >> if (!PyArg_ParseTuple(args, "s", &fname))
> >> return NULL;
> >>
> >> So, if I instanciate my object with a bad argument I've a good error
> >> message:
> >>
> >> tif = ImgProc(123)
> >> TypeError: argument 1 must be str, not int
> >> (followed by the traceback)
> >>
> >> But if I do:
> >> try:
> >> tif = ImgProc(123)
> >> except Exception as why:
> >> print("Error:", why)
> >>
> >> I get just:
> >>
> >> Error: <class '_liboqapy.ImgProc'> returned a result with an error set
> >>
> >> Without traceback. That's not very usefull.
> >>
> >> I prefer to keep the instanciation of this object into a try-except bloc
> >> but how to read the error message ?
> >>
> > Have a look ta the 'traceback' module.
> > Example:
> >
> > import traceback
> >
> > try:
> > 1/0
> > except Exception as ex:
> > print('Error:', ex)
> > traceback.print_exc()
>
> try:
> tif = ImgProc(123)
> except Exception as why:
> traceback.print_exc()
> print("always alive !")
>
> TypeError: argument 1 must be str, not int
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "/home/vincent/oqapy-3/trunk/filters/lenscorrection.py", line
> 56, in process_on_preview
> tif = ImgProc(123)
> SystemError: <class '_liboqapy.ImgProc'> returned a result with an error set
> always alive !
> -----------------------------------------------------------------------------
>
> This is better of nothing and the try-except works.
>
The try/except is NOT your problem. It's just a symptom.
ChrisA
More information about the Python-list
mailing list