抛出错误后是否可以从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
和一个错误代码)?