See https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/using-standard-exception-types