Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Coroutines and errors

edited February 2014 in Bugs Posts: 372

If you run this program you will notice that even though there is an error in the function foo yet it's not being pointed out by codea. But if you uncomment the second line and run the function without the coroutine codea will show an error.

Is this how it is supposed to be or a bug?

function setup()
    --foo()
    co = coroutine.create(foo)
    coroutine.resume(co)
end

function draw()
    coroutine.resume(co)
end

function foo()
    for i = 1,1000 do
        prin(ElapsedTime)
        coroutine.yield()
    end
end

Comments

  • Fyi: print is spelled wrong

  • Jmv38Jmv38 Mod
    Posts: 3,295

    @saurabh i think i remenber i had problems with print and coroutine. i dont use print anymore from a coroutine.

  • edited February 2014 Posts: 372

    @CodeaNoob, exactly, if you run that program it will not show an error even though it is supposed to.

    @Jmv38 it's not only print, even if I call a function which doesn't exist it will not show an error. Basically anything that can cause an error will not cause one.
    Like in this one.

    function setup()
        --foo()
        co = coroutine.create(foo)
        print(coroutine.status(co))
        coroutine.resume(co)
    end
    
    function draw()
        coroutine.resume(co)
        print(coroutine.status(co))
    end
    
    function foo()
        for i = 1,100 do
            print(coroutine.status(co))
            func()
            coroutine.yield()
        end
    end
    

    Is there a reason for just stopping the coroutine and not show errors?

    I was using coroutines, and had not set the value of one of the variables and instead of showing any error it just stopped the coroutine. Took some to figure it out.

  • Jmv38Jmv38 Mod
    Posts: 3,295

    if you try ┬┤coroutine error handling┬┤ in google you get this http://forums.riftgame.com/technical-discussions/addon-api-development/324570-error-handling-coroutines.html so you question is a common one, and here he shows how to deal with it

  • Posts: 372

    Thanks @Jmv38.

    An issue(not exactly an issue) with lua would probably be the last thing in my mind. I thought its codea and not lua else would have checked google first.

  • toffertoffer Mod
    Posts: 151

    I dont think that's Codea or lua issue, a coroutine handle errors inside it's 'thread', errors aren't throwed outside. Try to print your coroutine resume :

     function setup()
        --foo()
        co = coroutine.create(foo)
        print(coroutine.resume(co))
    end
    
    function draw()
        coroutine.resume(co)
    end
    
    function foo()
        for i = 1,1000 do
            prin(ElapsedTime)
            coroutine.yield()
        end
    end
    
  • Posts: 372

    Thanks @toffer.

Sign In or Register to comment.