首页 > Windows开发 > 详细

c# try catch 捕获Inner Exception

时间:2021-07-08 00:14:37      阅读:30      评论:0      收藏:0      [点我收藏+]

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

原文:https://www.cnblogs.com/q-z-lin/p/14983410.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!