Net Core教程

c# try catch 捕获Inner Exception

本文主要是介绍c# try catch 捕获Inner Exception,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

c# try catch 捕获Inner Exception

参考: how-to-catch-the-original-inner-exception-in-c

TryFindInnerException

/// <summary>
/// Get a inner exception
/// </summary>
/// <typeparam name="T">type of expected inner exception</typeparam>
/// <param name="top">Top exception</param>
/// <param name="foundException">Inner exception in top exception</param>
/// <returns>Wether type of inner exception equals T</returns>
public static bool TryFindInnerException<T>(Exception top, out T foundException) where T : Exception
{
    if (top == null)
    {
        foundException = null;
        return false;
    }
    Console.WriteLine(top.GetType());
    if (typeof(T) == top.GetType())
    {
        foundException = (T)top;
        return true;
    }

    return TryFindInnerException<T>(top.InnerException, out foundException);
}

使用示例

try
{
    //var a = 0; var b = 10 / a; //test other exception
    var webApp = WebApp.Start(url);
}
catch (System.Reflection.TargetInvocationException exception)
{
    if (TryFindInnerException<HttpListenerException>(exception, out var httpListenerException))
    {
        // handle HttpListenerException
        return;
    }

    throw exception;
}
这篇关于c# try catch 捕获Inner Exception的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!