小编lon*_*000的帖子

在 julia 中抛出错误和返回错误之间的区别

在给定条件的情况下,这两段代码会导致抛出相同的错误:

function f1(x)
  if x > 2
    return x
  else
    return error("x <= 2")
  end
end

function f2(x)
  if x > 2
    return x
  else
    throw(error("x <= 2"))
  end
end
Run Code Online (Sandbox Code Playgroud)

当 x <= 2 时同时出现f1f2错误,但我找不到为什么更喜欢一个而不是另一个的任何差异。更进一步,这 3 段代码返回相同的:

error(2)
throw(2)
throw(error(2))
Run Code Online (Sandbox Code Playgroud)

是否有关于如何使用 throw 与直接返回错误的指南?

error-handling julia

7
推荐指数
1
解决办法
328
查看次数

@spawn fetch 和 @sync 朱莉娅中的 @sync 有什么区别

异步完成多项工作(主要是排序向量和函数计算(其中计算是计算或内存限制的,目前,我可以通过以下方式编写这些操作:

  1. 使用Threads.@spawn
_f1 = Threads.@spawn f1(x)
_f2 = Threads.@spawn f2(x)
_f3 = Threads.@spawn f3(x)
y1 = fetch(_f1)
y2 = fetch(_f2)
y3 = fetch(_f3)
Run Code Online (Sandbox Code Playgroud)

还有这种模式(看起来更干净):

@sync begin
  @async y1 = f1(x)
  @async y2 = f2(x)
  @async y3 = f3(x)
end
Run Code Online (Sandbox Code Playgroud)

对于这个特定的用例,哪一个是首选?

multithreading julia

3
推荐指数
1
解决办法
986
查看次数

标签 统计

julia ×2

error-handling ×1

multithreading ×1