exception handling in set_str functions
research at matthewniemerg.com
Tue Jun 16 07:57:04 UTC 2015
-----BEGIN PGP SIGNED MESSAGE-----
Thanks for the reply. I understand now why it's done that way.
Indeed, I have it currently set up to test for this return value for
On 6/16/15 3:53 PM, Marc Glisse wrote:
> On Tue, 16 Jun 2015, Matthew Niemerg wrote:
>> I am working on a project that makes use of gmp and started to do
>> some simple tests with exception handling.
>> I noticed that two functions (in mpz_class, mpq_class,
>> int set_str(const char *s, int base)
>> int set_str(const std::string &s, int base)
>> simply modify the internal mp object in their respective classes
>> by calling the appropriate
>> int mp*_set_str(const char *s, int base)
>> The constructor methods, on the other hand, do throw exceptions
>> when the string literal cannot be converted.
>> Shouldn't these methods also perform exception handling?
> For constructors and operator=, an exception is the only way to
> signal an error. set_str on the other hand returns a value that
> indicates if there was a failure, and the user has a choice on how
> he wants to handle it. You are free to throw an
> std::invalid_argument, it will only take you one more line of code,
> but people who don't need exceptions can avoid paying the cost of
> It would not be absurd to have a set_str_with_exception that
> returns void and throws on error, but to save 1 line of code it
> does not seem worth it.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
-----END PGP SIGNATURE-----
More information about the gmp-discuss