Le 19 déc. 2012 à 15:32, David Bruant <[email protected]> a écrit :
> Le 19/12/2012 14:13, Claude Pache a écrit :
>> Hello,
>>
>> In SpiderMonkey (and perhaps other JS engines?), there are conditional catch
>> clauses:
>>
>> catch (exception if condition)
>>
>> Could such a feature added to ECMAScript?
>>
>> Rationale: Although try/catch mechanism was initially intended for treating
>> errors, it could be used in normal control flow with non-error condition.
> Why not just use normal control flow when you want to express non-error
> conditions?
> throw/try/catch was indeed intented for treating errors and when I read code,
> I expect an error path when encountering a try/catch.
As I've said, iterators throw StopIteration, which may be considered as a
non-error. And in the code example I've given below, I can't use "normal"
control flow to stop forEach from iterating over the remaining values, but
throwing works fine. It is not written in stone that throw/try/catch must be
used only for what it was primarily intended for.
>
>> ES.next sanction this pattern with StopIteration. In this case, it would be
>> nice to have a catch clause listening only what is wanted, without having to
>> add code for filtering out and rethrowing. Here is an example of use:
>>
>> Map.prototype.some = function(f, o) {
>> var ok = {} // an arbitrary private object
>> try {
>> this.forEach(function(v, k, m) {
>> if (f.call(o, v, k, m))
>> throw ok
>> })
>> }
>> catch (e if e === ok) {
>> return true
>> }
>> return false
>> }
>>
>> instead of, e.g.,
>>
>> catch (e) {
>> if (e !== ok)
>> throw e
>> return true
>> }
> I don't see the benefit from your example. You're basically removing one or 2
> lines of code in an hardly more expressive way. Your above example could even
> be rewritten as:
>
> catch (e) { if (e !== ok) throw e
> return true
> }
>
> That could be a code convention without needing to be part of the language.
>
> Do you have example of code in the wild that would benefit (performance,
> readability, etc.) from such an addition?
>
> David
I haven't search if there are code in the wild that would benefit, and in any
case, the benefit would indeed be small (slightly less code and better
readability), but I didn't see counterindications against that syntax either.
Claude
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss