throw new Exception(ex.Message); is even worse. It creates a brand new Exception instance, losing the original stack trace of the exception, as well as its type. (eg, IOException). In addition, some exceptions hold additional information (eg, ArgumentException.ParamName). throw new Exception(ex.Message); will destroy this information too. More @Wikipedia
Hover over any link to get a description of the article. Please note that search keywords are sometimes hidden within the full article and don't appear in the description or title.