Nice exceptions.

  • Thread starter Thread starter craigkenisston
  • Start date Start date
C

craigkenisston

I'm new to VS2005, I used VS2003 a bit, and I remember it didn't act
like this.

My code looks like :

try
{
blah
blah
blah
}
catch (Exception)
{
MyOwnException myoe = new MyOwnException ("Error on receiving data");
throw myoe;
}

And what I get when an error happens is a window telling me :
"Application1 has encountered a problem and needs to close.
Send Error Report Don't Send"

Then after clicking either "Send" or "Not Send", the windows closes and
the program vanishes.

As far as I remember I'm catching the exception and the program should
be keep working after that.

Where's my fault ?
 
I'm new to VS2005, I used VS2003 a bit, and I remember it didn't act
like this.

My code looks like :

try
{
blah
blah
blah
}
catch (Exception)
{
MyOwnException myoe = new MyOwnException ("Error on receiving data");
throw myoe;
}

And what I get when an error happens is a window telling me :
"Application1 has encountered a problem and needs to close.
Send Error Report Don't Send"

Then after clicking either "Send" or "Not Send", the windows closes and
the program vanishes.

As far as I remember I'm catching the exception and the program should
be keep working after that.

Where's my fault ?

You throw an exception from you catch block - where is that being
caught? In other words, it appears that the MyOwnException is not
beign caught.
 
I'm new to VS2005, I used VS2003 a bit, and I remember it didn't act
like this.

My code looks like :

As far as I remember I'm catching the exception and the program should
be keep working after that.

Where's my fault ?

Well, you're throwing another exception after you've caught the
original one...
 
I usually create a class, called

EntryPoint.cs


[STAThread]
static void Main(string[] args)
{
try
{

Application.Run(new Form1()); //Whatever your startup form is

}

}
catch (Exception ex)
{
//Notify User
MessageBox.Show( "A (uncaught) exception has occured. MyApp
cannot continue." );
//Shut down application
Application.Exit( );
}
}


This will catch any uncaught exceptions.

But Jon is right.
You catch an general exception, but you're rethrowing it.
Thus something else must catch it, or you'll get the blow-up screen.


You should should google

try catch finally brad abrams

and you can read where

"You should be writing many many more

try/finally
blocks

and not so many
try/catch/finally

blocks.
 
My complain is not why it is thrown, but why the application closes...
and I figured out why, but yet need to know how to workaround it.

The problem was this: it was on an thread.
If I run the same code without threading, the error is shown in a nicer
box with "Stop" and "Continue" buttons. Then the application doesn't
close on the error.

Now, the question, is it normal with a threaded application that a
thrown exception put the application down ?



I usually create a class, called

EntryPoint.cs


[STAThread]
static void Main(string[] args)
{
try
{

Application.Run(new Form1()); //Whatever your startup form is

}

}
catch (Exception ex)
{
//Notify User
MessageBox.Show( "A (uncaught) exception has occured. MyApp
cannot continue." );
//Shut down application
Application.Exit( );
}
}


This will catch any uncaught exceptions.

But Jon is right.
You catch an general exception, but you're rethrowing it.
Thus something else must catch it, or you'll get the blow-up screen.


You should should google

try catch finally brad abrams

and you can read where

"You should be writing many many more

try/finally
blocks

and not so many
try/catch/finally

blocks.





I'm new to VS2005, I used VS2003 a bit, and I remember it didn't act
like this.

My code looks like :

try
{
blah
blah
blah
}
catch (Exception)
{
MyOwnException myoe = new MyOwnException ("Error on receiving data");
throw myoe;
}

And what I get when an error happens is a window telling me :
"Application1 has encountered a problem and needs to close.
Send Error Report Don't Send"

Then after clicking either "Send" or "Not Send", the windows closes and
the program vanishes.

As far as I remember I'm catching the exception and the program should
be keep working after that.

Where's my fault ?
 
Now, the question, is it normal with a threaded application that a
thrown exception put the application down ?

As of .NET 2 that is indeed the normal behaviour.
..NET 1 behaviour was to silently terminate the thread

You need to handle the exception in the thread

Cheers
Doug Forster
 
Ok, good to know, thanks a lot !



Doug said:
As of .NET 2 that is indeed the normal behaviour.
.NET 1 behaviour was to silently terminate the thread

You need to handle the exception in the thread

Cheers
Doug Forster
 
Back
Top