John J Barton wrote:
I'll tell you straight out that TC39 should pay more attention to debugging.

How would that work? Debuggers are evolving rapidly, should we standardize one now? TC39 has a good cohort of JS developers who use debuggers in their real jobs. What should we be doing for debuggers _per se_ that we are not?

Rather than viewing debugging as an optional wagging appendage,

I didn't write "optional", and dogs' tails are there for good reason! :-P

A language's design may include such things as invariants (e.g. closure variable non-enumerability) that debuggers break. Debuggers break abstractions. This does not mean that languages should provide unprivileged APIs for self-hosting debuggers. That would be a security disaster on the web.

To get back to the specific problem of exceptions: they do get thrown sometimes, and I've had to debug problems where I wanted only one particular throw (from an XPCOM error return code, as it happens, a real pain to track down without debugger support).

In C++ this requires great GDB pain. In JS, it's a lot easier with the VM support for filtering based on exception type. We're working on such VM support in SpiderMonkey, see https://developer.mozilla.org/en-US/docs/SpiderMonkey/JS_Debugger_API_Reference/Debugger#onExceptionUnwind().

we should consider debugging as one of the essential elements in success of language features. (And proposing that I think exceptions are the only errors one must debug is just silly ;-).

You keep writing "error-handling" when the topic is exception-handling, though. Why is that?

    Debuggers must look inside of closures and get backstage-passes
    from the GC. They must bear many burdens for the good of the user.
    Any debugger worth using must be able to
    stop-on-only-*these*-exceptions, classifying by instance,
    instanceof/"class", duck-type or other criteria.


Claude's proposal leads to a small extra burden on debuggers but a much larger and broader burden on developers. It requires developers to build rule sets for exceptions-that-are-not-really-exceptions and to re-enter and maintain these rule sets across many projects and environments.

If you mean by "Claude's proposal" the catch (e if ...) syntax already in SpiderMonkey and Rhino, then I don't follow. The burden for filtering exceptions exists whether one has only catch (e) or catch (e if ...) syntax. With only catch (e), one must hand-code an if-else chain or switch, and worry about re-throwing in the default/final-else case.

So how is any new burden imposed by Claude's proposal (catch (e if ...))? It either exists in the structure of the code using exceptions, or it doesn't.

What syntax one must use to deal with the burden does not affect the burden's existence or magnitude -- although I contend that having only catch (e) makes missing re-throw bugs likelier.

All to save the fans of StopIteration style control flow from doing the right thing in the first place.
What "right thing" is that?

Your aggrieved and kind of snarky posts may make you feel good, but if you don't have a serious alternative, and if you insist there are no other non-error uses of exceptions, then we'll have to part ways on this issue.

/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to