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