The most common errors associated with the RWDecimal<T> classes are inexact errors and overflow errors. The Currency Module library provides a mechanism that lets you customize how these errors are handled.
Inexact errors occur when a number can't be represented exactly with the available number of digits, but can be approximated by reducing the number of digits after the decimal. When addition, subtraction, or multiplication result in an inexact error, an RWDecimalInexactErr<T> object is created and passed to an error handler.
By default, an inexact error results in an error message being printed and execution resuming. You can substitute a different action by supplying your own handler. Here is an example:
void myInexactHandler(const RWDecimalInexactErr<RWMP2Int>& errobj) {cerr << "The error message was '" << errobj.msg(); cerr << endl; cerr << "The operands were " << errobj.leftOperand(); cerr << " and " << errobj.rightOperand() << endl; cerr << "Ignoring loss of precision and continuing"; cerr << endl; } yourFunction() {RWDecimal<RWMP2Int>::setInexactHandler(myInexactHandler); . . . } |
An overflow error occurs when a number cannot be represented with the available number of digits. For example 10ˆ30 cannot be represented in the RWDecimal<RWMP3Int> class as it has too many digits. When an operation results in an overflow error, an RWDecimalOverflowErr<T> object is created and passed to an error handler.
The default overflow handler will print an error message and throw the error object as an exception. If your compiler does not support exceptions, then the RWThrow error handler is called to simulate an exception.
void myOverflowHandler(const RWDecimalOverflowErr<RWMP2Int>& x) {. . Error handling code . . } yourFunction() {RWDecimal<RWMP2Int>::setOverflowHandler(myOverflowHandler) . . . |
Copyright © Rogue Wave Software, Inc. All Rights Reserved.
The Rogue Wave name and logo, and SourcePro, are registered trademarks of Rogue Wave Software. All other trademarks are the property of their respective owners.
Provide feedback to Rogue Wave about its documentation.