On Wed, Apr 24, 2019 at 4:51 AM Vincent Vande Vyvre <vincent.vande.vy...@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 -- https://mail.python.org/mailman/listinfo/python-list