Someone asked what the practical differences are between 'throw;' (no arguments) and 'throw object;' (in C# syntax).
Specifically, what's the difference between:
catch (Exception e) { throw; }
and
catch (Exception e) { throw e; }
This is mildly related to the 'catch' vs 'catch(Exception e)' vs. 'catch (SomeSpecificException e)'. I'll avoid talking about catch, and just focus on the rethrow.
What's the same:
catch (Exception e) { if (...) throw; else throw e; }
as an academic way to demonstrate that they must have some similar properties. Never actually write code like that!
catch { throw new MyWrapperException(); }
What's different:
Check out the C# spec for more details