For .NET Framework, there is this question, but was answered twelve years ago and might be no more relevant in the age of .NET Core.
Did anything change in the exception mechanics of .NET Core? Are exceptions in .NET Core as slow as in .NET Framework?