Исключение SystemException обычно зарезервировано для среды выполнения .NET, а не для кода вашего приложения. По сути, не создавайте SystemException при создании собственного пользовательского класса Exception.
Если вы создаете свои собственные классы Exception, вы должны либо извлечь их из Exception, либо из ApplicationException. Изначально ApplicationException был предназначен для использования не для каркасных исключений, но он как бы отошел на второй план. Я полагаю, что авторы фреймворка теперь рекомендуют выводить ваши пользовательские исключения из базового класса Exception.