|
Ooh, that gave me headache before I even got to the end of the declarations!
Kevin
|
|
|
|
|
There's just one thing that puzzles me about VB6: why are all the OTHER VB6 programmers so bad? I don't use VB6 anymore (when I saw .NET, I never looked back), but I was never this bad -- I wasn't even this bad when I was writing programs in QBASIC! I mean, seriously!
So what's with all the amazingly awful VB programmers? It must be a curse.
|
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
{
string str = "Even exception occur again in catch block still finally block is Working";
try
{
throw new IndexOutOfRangeException();
}
catch
{
goto Hello;
throw new IndexOutOfRangeException();
}
finally
{
Response.Redirect("Error.aspx?str="+ str);
}
Hello:
Response.Write("Finally Skiped!");
}
http://www.codeproject.com/KB/aspnet/DotNetBulletQuestions.aspx?msg=2764693#xx2764693xx[^]
A goto in a try/catch/finally block... urrrghh!
|
|
|
|
|
My 5, that code is pure Horror. Anyway (I made a test) the goto statement it is ininfluent.
BTW I didn't know C# has goto statement, is there a reason to have it in such a language?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
For me, the GOTO statement is to be removed completely. When you got to situations where you need to skip a finally, you should better rethink your design/architecture and your code. A clean rewrite of your code and your conditions and tests let you avoid situations like this easily and cleanly!!!
________________________________________
http://www.glyphart.com neat icons and glyphs for websites and applications
|
|
|
|
|
You cannot skip (at leat that way) finally .
On the overall I agree with you. I don't see any reason (maybe there are...) to live the goto statement in C# .
IMHO:
- In C the goto statement makes perfectly sense.
- In C++ it makes seem because of C compatibility.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
CPallini wrote: BTW I didn't know C# has goto statement, is there a reason to have it in such a language?
A reason ? Maybe no, but you could need one if you use a switch.
switch(iData)
{
case 0:
case 1:
break;
case 2:
goto 3;
case 3:
break;
}
Learn from the mistakes of others, you may not live long enough to make them all yourself.
|
|
|
|
|
Yeah, the poor mans drop through.
Bar fomos edo pariyart gedeem, agreo eo dranem abal edyero eyrem kalm kareore
|
|
|
|
|
o really ??
i think it can be used like this :
switch(iData)
{
case 0:
case 1:
// do stuff for 0 and 1
break;
case 2:
// do stuff for 2
case 3:
// do stuff for 2 and 3
break;
}
if the break statement is missing, it go through next case ..
VirtualVoid.NET
|
|
|
|
|
It is NOT C/C++ , my friend, it is C#
Juraj Suchan wrote: case 0:
case 1:
// do stuff for 0 and 1
break;
Fine: It is allowed.
Juraj Suchan wrote: case 2:
// do stuff for 2
case 3:
// do stuff for 2 and 3
break;
That's not allowed in C# (well, in fact, it is allowed as it stands, with just comments ).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
ou .. am I blind? sorry
VirtualVoid.NET
|
|
|
|
|
in C++ drop throw switch-statement is allowed in C# not - if it was that, you didn't see.
|
|
|
|
|
|
I like this reason as well
void foobar()
{
// blah blah blah
for(...)
{
// blablabla
for(..)
{
// foo foo foo
if(bar)
goto end;
}
}
end:
// beep bop a loola
}
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station....
_________________________________________________________
My programs never have bugs, they just develop random features.
|
|
|
|
|
You may throw an exception for that.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
That's a worse offense than a goto IMHO - exceptions should be reserved for exceptional conditions (the clues in the name) not used as an alternative control flow mechanism.
|
|
|
|
|
Rob Grainger wrote: not used as an alternative control flow mechanism.
That's exactly what they are (IMHO).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
CPallini wrote: That's exactly what they are (IMHO).
Guess so, but the operative bit to my eyes is "alternative". Exceptions are much heavier weight than loop variables etc. in terms of the execution model. Enclosing code in try/catch involves manipulation of the stack frame, tracking exception-handling blocks and other devilry.
Personally, if a condition can be anticipated, I consider it better to manage using traditional control flow mechanisms.
|
|
|
|
|
You're right and personally I won't use exceptions for that piece of code (I just made a not about the possibility). BTW I won't even write such a piece of code.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I take exception to that remark!
*Bypasses his finally block due to a goto statement*
|
|
|
|
|
hmm, what do you think? Why is the name of the Exception object "Exception" - because you should (ab)use it for control program flow?
So I see it like this:
Use Exceptions for exceptions
Avoid goto, but if you must, why not use goto?
A single goto, for a purpose as shown above, for shure does not leed to spaghetti-code,
but don't try to replace all your for/whiles... with a goto.
|
|
|
|
|
A simple 'break' would do the job, no need for 'goto'...
Regards
Thomas
|
|
|
|
|
break will only break the inner most loop!
C# is not java where you could have labelled loop...
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station....
_________________________________________________________
My programs never have bugs, they just develop random features.
|
|
|
|
|
I know.
But in the pseudocode above it will definitely execute the 'beep bop a loola'...
Regards
Thomas
|
|
|
|
|