I often find myself wanting to do an assignment inside a try...catch block, as in the following real-world code I'm working on to read from a Channel until it's closed
global outbox = Channel() @async while true try t, data = take!(outbox) catch e # InvalidStateException is thrown when the channel is closed isa(e, InvalidStateException) || rethrow(e) break end println(sock, json(c(t, data))) end But the problem is that try...catch blocks introduce their own scope, so t and data don't exist after the exception handling. One thing I've done before is introducing the variables before the try block, (t = nothing; data = nothing) block before the try...catch, but that kills the type stability of the variables and doesn't feel right. Is there a more Julian idiom for this sort of thing? Thanks, -s
