例外処理において、`throw;` と `throw ex;` の挙動の違いは何か。

`catch` ブロック内で再スローする場合、`throw;` を使うと元の例外発生箇所の情報を保持したまま上位に投げられる。`throw ex;` は新しい例外として投げ直す扱いになり、デバッグ時に真の原因特定が困難になる。