是否可以从异常字符串中剥离调用堆栈?

时间:2011-10-11 05:09:34

标签: c# exception exception-handling

在我正在处理API错误处理的整个组件中使用了异常:

catch (Exception ex)
{
    // ex.ToString() below may be something like "database is locked"
    string error = string.Format(
        "Error when trying to create a playlist: {0}", ex.ToString());
    throw new Exception(error);
}

基本上,较低级别的组件会抛出Exception详细的错误细节,并且会在更高级别捕获,并提供更通用,用户友好的错误消息。

当我的客户端应用程序处理此应用程序时,它会调用ex.ToString()来获取完整的错误字符串,但这也包括调用堆栈。

Error: exceptions.RuntimeError: Error when trying to create a playlist: 
System.Exception: database is locked
at <very large call stack here>

是否有一种简单的方法可以阻止最后一部分(即at <very large call stack here>)出现在错误消息中,而无需解析字符串?这将返回给用户,我希望错误是以用户为中心而不是以应用为中心。

1 个答案:

答案 0 :(得分:2)

尝试使用Exception.Message代替Exception.ToString

string message = string.Format(
    "Error when trying to create a playlist: {0}", ex.Message);
throw new YourException(message, ex);