在我正在处理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>
)出现在错误消息中,而无需解析字符串?这将返回给用户,我希望错误是以用户为中心而不是以应用为中心。
答案 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);