Print only part of a stack trace

Adam D. Ruppe destructionator at gmail.com
Wed Jul 1 18:51:24 UTC 2020


On Wednesday, 1 July 2020 at 17:44:45 UTC, Dennis wrote:
> On assertion failure, the default error handler prints a stack 
> trace that looks like this


My cgi.d does something just like that. It just does 
`exception.toString()` then `splitLines` on that string.



         Element exceptionToElement(Throwable t) {
                 auto div = Element.make("div");
                 div.addClass("exception-display");

                 div.addChild("p", t.msg);
                 div.addChild("p", "Inner code origin: " ~ 
typeid(t).name ~ "@" ~ t.file ~ ":" ~ to!string(t.line));

                 auto pre = div.addChild("pre");
                 string s;
                 s = t.toString();
                 Element currentBox;
                 bool on = false;
                 foreach(line; s.splitLines) {
                         if(!on && line.startsWith("-----"))
                                 on = true;
                         if(!on) continue;
                         if(line.indexOf("arsd/") != -1) {
                                 if(currentBox is null) {
                                         currentBox = 
pre.addChild("details");
                                         
currentBox.addChild("summary", "Framework code");
                                 }
                                 currentBox.addChild("span", line 
~ "\n");
                         } else {
                                 pre.addChild("span", line ~ "\n");
                                 currentBox = null;
                         }
                 }

                 return div;
         }





More information about the Digitalmars-d-learn mailing list