3 points
*
I should have elaborated, but basically what MD87 replied. During the development of .NET it was decided that every exception caused by programs should inherit from ApplicationException, and all system errors should inherit from SystemException. Unfortunately .NET devs didn’t follow this and now everything should just inherit Exception since it’s easier to check. Interestingly, both SystemException and ApplicationException seem functionally identical to Exception.
1 point