throw exRe-throws the exception object from this point. This is usually bad because it destroys the useful information of the call stack, which leads to the original problem.
throwreleases the original caught exception from the point at which it was actually thrown. It saves the call stack information to this point, and not to the point you caught.
catch(Exception) catch - , , , , , , - , - . . catch(SomeKindOfException), ( , ). , :
try
{
}
catch(FileNotFoundException fnfex)
{
}