TurtleSoft posted on the Interest list earlier about problems we had with
exception handling, and Thiago suggested I post here.

Since the early 90s, our C++ code has had about 10,000 sanity checks which
give an error message with source file & line number, then throw an
exception. There is a try/catch block in the event loop which swallows
them.  That way users can continue work.  Only a small % of the checks are
ever called, but it makes bugs very easy to fix when users or testers
report them. Our app almost never crashes thanks to the many checks. We
learned the system from Bill Atkinson, author of MacPaint and HyperCard.

The sanity system started in Metrowerks PowerPlant, then worked OK in
Carbon, Cocoa, and MFC.  For Qt we wrapped QApplication::notify with
try/catch. It worked for most checks on Macintel and Wintel, but failed for
Mac ARM. After the message, instant termination. Users lose their work,
testers must start over.

Turns out that Qt intentionally does not support exceptions thrown through
GUI classes, and the early success was just an accident.

Exceptions are an "exceptionally" handy C++ feature. Instant "beam me up,
Scotty". It is too bad that Qt does not support them fully, and I'd like to
change that. So I would be willing to work on getting GUI classes like
QWidget able to pass exceptions, if it means we can get our old
sanity-checking back. It would be our open-source contribution.

I realize this is a huge, fundamental change to Qt. It would need to be a
multi-year project, done in tiny bits so as not to break things.  Anyhow,
my time is limited.

Getting exceptions through signals/slots is lower priority. We don't use
those much and probably could bypass them somehow. We just want a reliable
path to the event loop.

Personally, I've programmed since punch card days in 1966 or so. I've
designed and shipped several apps for PCs. I've refactored and rebuilt all
sorts of C++ code from other people, and could do this work politely and
competently.

Does this seem reasonable?

Dennis Kolva
Programming Director
TurtleSoft.com
-- 
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to