On Tuesday, 19 August 2014 at 20:33:00 UTC, monarch_dodra wrote:
On Monday, 18 August 2014 at 13:51:14 UTC, nrgyzer wrote:
Hi all,
I've the following code snipped:
import std.bigint;
void main(string[] args)
{
BigInt i = "12345";
if (args.length > 1)
{
goto Exit;
}
i = BigInt("67890");
Exit:
return;
}
For what it's worth, whenever you have "goto-end" style code,
place all your code in a proper block, in such a way that all
your variable declarations are in that block, and all your
gotos break out of this block. This way, a goto will *never*
cross a declaration, so coding is easy. The only variables you
place at the top or the ones that could need cleanup.
void main(string[] args)
{
//Declarations that need cleanup:
void* p;
//Code
{
BigInt i = "12345"; //Local variable
if (args.length > 1)
{
goto Exit; //Breaks out of block
}
i = BigInt("67890");
BigInt j = "54321"; //Local variable
}
//End
Exit:
CleanUp(p);
return;
}
Yes, that works. I'm using the goto-command to exit my function
if an error (not necessarily an exception) occured. Sure, I can
simply do a return, but I personally prefer a fixed endpoint of
my functions. This also simplifies debugging my application
because I don't need 10 or 20 breakpoints (one before each
return-point).