本文整理汇总了C++中Exception::stackTrace方法的典型用法代码示例。如果您正苦于以下问题:C++ Exception::stackTrace方法的具体用法?C++ Exception::stackTrace怎么用?C++ Exception::stackTrace使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Exception
的用法示例。
在下文中一共展示了Exception::stackTrace方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fallbackErrorPage
void RequestError::fallbackErrorPage(Request* request,
const Exception& e,
const String& e2Name)
{
if (!request->headersSent())
{
request->setStatus(500);
request->sendHeaders();
}
request->stream() << "<h1>“" << e.type().htmlEscape() << "” exception</h1>"
<< "<p>" << e.htmlMessage() << "</p>"
<< "<p><strong>Additionally, a “" << e2Name
<< "” exception was encountered while handling the "
<< "exception.</strong></p>"
<< "<h2>Stack trace</h2><ol start=\"0\">";
List<StackTrace::Frame> stack = e.stackTrace()->stackFrames();
for (const StackTrace::Frame& frame : stack)
{
request->stream() << "<li><strong><code>" << frame.function.htmlEscape()
<< "</code></strong> (<code>0x"
<< String::fromNumber(frame.address, 16)
<< "</code>)<br />"
<< "<small>in <code>" << frame.object.relativePath()
<< "</code>, file <code>" << frame.fileName
<< "</code>, line " << frame.line << "</small></li>";
}
request->stream() << "</ol>";
}
示例2: loadStackTrace
void RequestError::loadStackTrace(Exception& e, Template* tpl)
{
List<Variant> entries;
List<StackTrace::Frame> stack = e.stackTrace()->stackFrames();
for (const StackTrace::Frame& frame : stack)
{
Map<String, Variant> entry;
entry["address"] = frame.address;
entry["functionName"] = frame.function;
entry["object"] = frame.object.relativePath();
entry["fileName"] = frame.fileName;
entry["line"] = frame.line;
entries.append(entry);
}
tpl->set("stackTrace", entries);
}