On 2011-07-08 10:13, Sébastien Petitdemange wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi Johan,
On 07/08/2011 09:58 AM, Johan Råde wrote:
I tried adding the following directive to my sip file, but it seems to
have no effect. There is still a crash when an exception is thrown in
the C++ code.
%Exception std::exception
{
%TypeHeaderCode
# include "../../Common.h"
# include "../../TextTable/Exceptions.h"
%End
%RaiseCode
SIP_BLOCK_THREADS
translate(sipExceptionRef)
SIP_UNBLOCK_THREADS
%End
};
Try this:
%Exception std::exception(SIP_Exception) /Default/
{
%TypeHeaderCode
# include "../../Common.h"
# include "../../TextTable/Exceptions.h"
%End
%RaiseCode
SIP_BLOCK_THREADS
translate(sipExceptionRef)
SIP_UNBLOCK_THREADS
%End
};
Seb
That does not work either. I also tried the code
%Exception std::exception(SIP_Exception) /PyName=StdException/
{
%TypeHeaderCode
#include <exception>
%End
%RaiseCode
const char *detail = sipExceptionRef.what();
SIP_BLOCK_THREADS
PyErr_SetString(sipException_std_exception, detail);
SIP_UNBLOCK_THREADS
%End
};
from the SIP reference guide. I still get a crash.
And I can not find any try/catch blocks in the generated cpp files.
My sip file begins as follows:
----------------------------------------------------------------------
%Module TextTable 0
%Include TypeMaps.sip
%Exception std::exception(SIP_Exception) /Default/
{
%TypeHeaderCode
# include "../../Common.h"
# include "../../TextTable/Exceptions.h"
%End
%RaiseCode
SIP_BLOCK_THREADS
translate(sipExceptionRef)
SIP_UNBLOCK_THREADS
%End
};
class TextRow {
%TypeHeaderCode
# include "../../Common.h"
# include "../../TextTable/TextRow.h"
%End
public:
TextRow(const TextRow& other);
~TextRow();
...
---------------------------------------------------------------------------------
_______________________________________________
PyQt mailing list [email protected]
http://www.riverbankcomputing.com/mailman/listinfo/pyqt