抛出错误后是否可以从Julia函数返回值?

抛出错误后是否可以从Julia函数返回值?,julia,Julia,我希望能够同时抛出两个错误,但仍然能够得到返回的值 因此,我尝试了以下两种方法,但这两种方法都没有达到我所希望的效果: function func() try error() catch e throw(e) finally return 10 end end 这将返回10,但不会引发错误 function func() try error() catch e thr

我希望能够同时抛出两个错误,但仍然能够得到返回的值

因此,我尝试了以下两种方法,但这两种方法都没有达到我所希望的效果:

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

注意:我在不使用finally的情况下获得与第二位代码相同的结果


我想要的是能够调用
foo=func()
,抛出错误并使
foo=10

您可能不想这样做。您可能希望返回两个值, 第二个是错误,正如Thilo在上文中所说:

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

foo, errstring = func()
有一种方法可以做你不应该做的事情。 为foo使用全局变量,并在函数中指定全局变量 而不是通过返回值,如:

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()

你可能不想那样做。您可能希望返回两个值, 第二个是错误,正如Thilo在上文中所说:

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

foo, errstring = func()
有一种方法可以做你不应该做的事情。 为foo使用全局变量,并在函数中指定全局变量 而不是通过返回值,如:

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()

例外情况并非如此。您要么得到返回值,要么得到异常(除非通过直接调用方,而且通过所有调用方捕获到冒泡)。也许您希望返回一对值(同时包含
10
和一个错误代码)?异常不是这样工作的。您要么得到返回值,要么得到异常(除非通过直接调用方,而且通过所有调用方捕获到冒泡)。也许您想返回一对值(同时包含
10
和一个错误代码)?