Lambdas can throw checked exceptions, but such lambdas will not work with the interfaces used by the Collection API. Variables that are in-scope where the lambda is declared may only be accessed inside the lambda if they are effectively final, i.e. if the variable is not mutated inside or outside of the lambda scope.