0
나는 다음과 같은 코드가 있습니다비약 : 구조/캐치 태스크 시간 초과
try do
IO.inspect("start task")
t = Task.async(fn -> Process.sleep(7000) end)
IO.inspect("start awaiting")
Task.await(t)
rescue
e ->
IO.inspect("catch error")
IO.inspect(e)
after
IO.inspect("after")
end
IO.inspect("success ending")
인쇄됩니다 :
"start task"
"start awaiting"
"after"
00:00:03.510 [info] Application my_app exited: exited in: MyApp.Application.start(:normal, [])
** (EXIT) exited in: Task.await(%Task{owner: #PID<0.497.0>, pid: #PID<0.498.0>, ref: #Reference<0.3923892342.570949633.190577>}, 5000)
** (EXIT) time out
그래서 기다리고
내 호출자 프로세스를 충돌, 나는 오류를 구출하지 수, 여하튼 "after"블록이 사용됩니다. 발신자 프로세스를 작업 시간 초과 오류로부터 보호 할 수있는 방법을 이해할 수 없습니다.