我希望既可以抛出两个错误,又可以返回一个值。
所以我尝试的是以下两个,但似乎都不符合我希望他们的行为:
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
答案 0 :(得分:2)
您可能不想这样做。您可能想返回两个值, 如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()