How to avoid throwing an exceptions for a built-in function?
Ivan Kazmenko via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed May 10 06:12:46 PDT 2017
On Wednesday, 10 May 2017 at 12:40:41 UTC, k-five wrote:
> I have a line of code that uses "to" function in std.conv for a
> purpose like:
>
> int index = to!int( user_apply[ 4 ] ); // string to int
>
> When the user_apply[ 4 ] has value, there is no problem; but
> when it is empty: ""
> it throws an ConvException exception and I want to avoid this
> exception.
>
> currently I have to use a dummy catch:
> try{
> index = to!int( user_apply[ 4 ] );
> } catch( ConvException conv_error ){
> // nothing
> }
>
> I no need to handle that, so is there any way to prevent this
> exception?
I assume that an empty string is a valid input then.
The question is, what value do you want `index` to have when the
string is empty?
Maybe the old value, or some constant?
In any case, to better express your intent, you may write
something like:
if (user_apply[4] != "")
{
index = to !(int) (user_apply[4]);
}
else
{
index = ...; // specify whatever your intent is
}
This way, the code is self-documenting, and the program still
throws when `user_apply[4]` is neither empty nor an integer,
which may be the right thing to do in the long run.
Ivan Kazmenko.
More information about the Digitalmars-d-learn
mailing list