DOM guide: Error handling: Difference between revisions
No edit summary |
No edit summary |
||
Line 24: | Line 24: | ||
delete myEH; | delete myEH; | ||
Note that the daeErrorHandler does not destroy or free up any memory used by custom error handlers. You are responsible to destroy the error handler yourself. | Note that the daeErrorHandler does not destroy or free up any memory used by custom error handlers. You are responsible to destroy the error handler yourself. | ||
==Sending Error Messages To daeErrorHandler== | |||
A client application is free to call the daeErrorHandler code to route their error messages. | |||
To send a message you need to obtain a pointer to the active error handler by calling daeErrorHandler::get(). You can then call the appropriate error handling method. | |||
daeErrorHandler::get()->handleError( "The data you are loading is broken. Go fix it and try again!" ); |
Revision as of 04:54, 27 March 2007
The COLLADA DOM provides an interface, daeErrorHandler, that handles the printing error messages.
Overview
The daeErrorHandler is an abstract singleton class. That is the functionality must implemented in a subclass but only one instance of any subclass will be active and available through the daeErrorHandler interface.
The COLLADA DOM provides a default daeErrorHandler implementation, daeStdErrPlugin. The daeStdErrPlugin class implements daeErrorHandler and routes the string error messages to C standard error stream.
Creating Your Own Error Handler
It may be desirable to route error messages for special handling or because the C standard error stream is unavailable, like in GUI programs. You can create your own error handling code by implementing a class that inherits from daeErrorHandler.
The daeErrorHandler interface declares two functions that need to be implemented to handle messages:
handleError( daeString ); handleWarning( daeString );
Implement these functions to parse or route the messages as you see fit. An example would be to create a pop-up window with the error message.
After implementing your error handling class you must pass an object of your class to the daeErrorHandler class to be used for error handling. The daeErrorHandler::setErrorHandler method is used to specify a specific error handler to be used.
DAE *daeObject = new DAE(); myErrorHandlerClass *myEH = new myErrorHandlerClass(); daeErrorHandler::setErrorHandler( myEH ); daeObject->load( myFileToLoad ); ... delete daeObject; delete myEH;
Note that the daeErrorHandler does not destroy or free up any memory used by custom error handlers. You are responsible to destroy the error handler yourself.
Sending Error Messages To daeErrorHandler
A client application is free to call the daeErrorHandler code to route their error messages.
To send a message you need to obtain a pointer to the active error handler by calling daeErrorHandler::get(). You can then call the appropriate error handling method.
daeErrorHandler::get()->handleError( "The data you are loading is broken. Go fix it and try again!" );