I have some posts queued that make use of the C++ exception classes that have been useful in my previous projects. These classes were primarily used for logging. COM calls which return an HRESULT
indicating the success or failure of the call. These return values should be examined and action should be taken if there is a failure. What type of action to take will depend on the scenario. In some cases an application may fallback on alternative functionality. In other cases the failure may be irrecoverable. The worst thing to do is nothing at all. An early failure could result in a problem that is not realized until later and require a painful debugging experience.
For the sample code that I share here, I will not implement full error handling to avoid distraction. But to avoid undetected failures, I do not want to leave the values untouched. In the sample code I will use an inline function named TOF
(Throw On Failure). TOF
will throw an exception if there is a failed return value. In most of the sample code presented here, the exception will not be caught. When the exception is not caught, the program is designed to terminate. The TOF
function itself will return the HRESULT
if successful. The HRESULT
is still available for further examination if needed.
The exception classes and the TOF
function can be found on Github.
https://github.com/j2inet/CppAppBase/blob/master/src/common/Exception.h
One thought on “HRESULT and COM Exceptions”