Checked exceptions within Block<T>

Remi Forax forax at
Wed Jan 16 02:09:29 PST 2013

On 01/16/2013 09:02 AM, Neal Gafter wrote:
> On Tue, Jan 15, 2013 at 9:41 PM, Brian Goetz <brian.goetz at> wrote:
>> Dynamic detection is used, for example, to ensure that someone doesn't
>> [...] call it after the variable to be mutated has gone out of scope.
> You can't (syntactically) name a variable that is out of scope, so there is
> no way to mutate it if it is out of scope.

You can capture it in a lambda and call the lambda that will mutate the 
variable out of the scope.

Runnable r;
    int a = 0;
    r = () -> { a = 1; };

so it depends if you consider that a still exist or not when you call run.

>    My point is that variable scope is a lexical concept, and lifetime is a dynamic concept.The variable
> "comes in and out of scope" every time a lambda in the scope of the
> variable is executed - and then it is in scope on some threads but not in
> others.  It is a category error to suggest any dynamic checking would be
> helpful.

lambdas that capture and mutate a local variable need at least to be 
biased to the current thread and if you consider that accessing to 
mutating a local variable out of it scope is not legal you need another 

> On the other hand the scope and lifetime of control constructs
> (specifically the control targets associated with break, continue, and
> return) do have some association.


More information about the lambda-dev mailing list