The try block is hiding an error, ERROR: UndefVarError: i not defined. You 
need to interpolate the i variable in the quoted expression using $i:

for i=1:4
    try
        if i==3 error() end
        eval(:(push!(a,$i)))
    catch e
    end
end

— Mike
​
On Wednesday, 21 October 2015 09:11:44 UTC+2, 2n wrote:
>
> I'm trying to eval an expression in a try block and it doesn't seem to 
> work.
> a=[]
> for i=1:4
>     try
>         if i==3 error() end
>         eval(:(push!(a,i)))
>         catch e
>     end
> end
>
> a
>
> After running the above code a evaluates to: 
>
> 0-element Array{Any,1}
>
> I'm expecting and want the same result as the code below which evaluates to: 
> 3-element Array{Any,1}:
>  1
>  2
>  4
>
> a=[]
> for i=1:4
> try
>  if i==3 error() end
>  push!(a,i)
>  catch e
>  end
> end
>
> a
>
> Is there a way to get expression evalution to work in this case?
>
>

Reply via email to