Ulrich Eckhardt schrieb: > Hi! > > In callproc.c from trunk is a function called SetException(), which calls > FormatError() only to discard the contents. Can anyone enlighten me to the > reasons thereof? Is it just to check if the errorcode is registered in the > stringtables?
I think that your guess is somewhat similar to what I thought when I wrote the code. > > The reason I ask is the CE port. The FormatMessage API exists there (or, > rather, the FormatMessageW API), but the tables containing the error messages > are optional for the OS and for space reasons many vendors chose not to > include them. That means that the function there regularly fails to retrieve > the requested string. > > My first approach was to fall back to simply providing a sting with a numeric > representation of the errorcode, but that would change the meaning of above > function, because then it could never fails. > > My second approach was to enhance PyErr_SetFromWindowsErr() to handle the > additional error codes that are checked in SetException(). However, those > require more context than just the error code, they use the EXCEPTION_RECORD > passed to SetException() for that. > > My third approach would be to filter out the special error codes first and > delegate all others to PyErr_SetFromWindowsErr(). The latter already handles > the lack of a string for the code by formatting it numerically. This would > also improve consistency, since the two functions use different ways to > format unrecognised errors numerically. This approach would change where and > how a completely unrecognised error code is formatted, but would otherwise be > pretty equivalent. The third approach is fine with me. Sidenote: The only error codes that I remember having seen in practice are 'access violation reading...' and 'access violation writing...', although it may be that on WinCE 'datatype misalignment' may also be possible. -- Thanks, Thomas _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com