using System;
using System.Linq;
using System.Text;
namespace Core.Util
{
public static class ExceptionHelper
{
private static string GetExceptionAddr(Exception e)
{
StringBuilder excAddrBuilder = new StringBuilder();
e?.StackTrace?.Split("\r\n".ToArray())?.ToList()?.ForEach(item =>
{
if (item.Contains("行号") || item.Contains("line"))
excAddrBuilder.Append($" {item}\r\n");
});
string addr = excAddrBuilder.ToString();
return addr.IsNullOrEmpty() ? " 无" : addr;
}
private static string GetExceptionAllMsg(Exception ex, int level)
{
StringBuilder builder = new StringBuilder();
builder.Append($@"{level}层错误:消息:{ex?.Message}位置:{GetExceptionAddr(ex)}");
if (ex.InnerException != null)
{
builder.Append(GetExceptionAllMsg(ex.InnerException, level + 1));
}
return builder.ToString();
}
public static string GetExceptionAllMsg(Exception ex)
{
string msg = GetExceptionAllMsg(ex, 1);
return msg;
}
}
}