Можно ли вернуть значение из функции Джулии после выдачи ошибки? - PullRequest
0 голосов
/ 28 марта 2019

Я хочу, чтобы оба могли выдать оба сообщения об ошибке, но все еще иметь возможность получить возвращаемое значение.

Итак, я попробовал следующие два, но ни один из них не ведет себя так, как я хочу

function func()
    try
        error()
    catch e
        throw(e)
    finally
        return 10
    end
end

Возвращает 10, но не выдает ошибок.

function func()
    try
        error()
    catch e
        throw(e)
    finally
        10
    end
end

Выдает ошибку, но не возвращает 10.

Примечание: Я получаю те же результаты, что и второй бит кода, без использования наконец

Я хотел бы иметь возможность вызывать foo = func() иметь ошибку и foo = 10

1 Ответ

2 голосов
/ 28 марта 2019

Вы, вероятно, не хотите этого делать.Вы, вероятно, захотите вернуть два значения, второе - ошибку, как сказал Тило выше:

function func()
    err = ""
    try
        error()
    catch e
        err = "Error string"
    finally
        10, err
    end
end

foo, errstring = func()

Есть способ сделать то, что вы, вероятно, не должны делать.Используйте global для foo, и присвойте global в функции вместо возвращаемого значения, как в:

foo = 2

function func()
    global foo = 10
    try
        error()
    catch e
        throw(e)
    finally
        10
    end
end


function thrower()
    try
        func()
    catch
        println("foo = $foo")
    end
end

thrower()
...