FAQ
2016-05-20 4:13 GMT+02:00 Jesse Schalken <me@jesseschalken.com>:
On Fri, May 20, 2016 at 4:35 AM, Rasmus Schultz wrote:

This is inconsistent with at least JavaScript and C#, where the stack
trace is populated at the throw site. (Probably others?)
I'm not sure about C#, but in JavaScript (Node.js):

function get_error() {
return new Error('my error');
}

function do_throw(e) {
throw e;
}

try {
do_throw(get_error());
} catch (e) {
console.log(e.stack);
}


results in:

Error: my error
at get_error (/home/jesse/src/test.js:2:12)
at Object.<anonymous> (/home/jesse/src/test.js:10:14)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:146:18)
at node.js:404:3


The top frame is the construction (get_error) and the site of the throw
(do_throw) doesn't appear in the stack at all.
The comparison with JavaScript isn't a good one, since you can throw
everything in JS. If they didn't provide the stack trace upon throw, you
would not have a stack trace at all if you throw a plain string.

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 11 of 18 | next ›
Discussion Overview
groupphp-internals @
categoriesphp
postedMay 19, '16 at 11:14a
activeMay 24, '16 at 6:53p
posts18
users9
websitephp.net

People

Translate

site design / logo © 2019 Grokbase