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.

Vincent

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to