gpt4 book ai didi

elixir - 模式匹配 HTT 毒 react Elixir

转载 作者:行者123 更新时间:2023-12-02 07:09:32 25 4
gpt4 key购买 nike

有什么方法可以对 httpoison 的错误响应进行模式匹配吗?我就是这么做的

case HTTPoison.get!(url, [], []) do
%HTTPoison.Error{reason: reason} ->
IO.inspect "Media: #{reason}!"
:timer.sleep(:timer.seconds(3))
do_loop(starting, ending, interval, camera_exid)
response ->
upload(response.status_code, response.body, starting, camera_exid)
do_loop(starting + interval, ending, interval, camera_exid)
end

但是它没有捕获超时并给了我错误

** (HTTPoison.Error) :timeout
(httpoison) lib/httpoison.ex:66: HTTPoison.request!/5
(extractor) lib/snapshot/snap_extractor.ex:67: Extractor.SnapExtractor.do_loop/4
(elixir) lib/enum.ex:651: Enum."-each/2-lists^foreach/1-0-"/2
(elixir) lib/enum.ex:651: Enum.each/2

我认为我的做法是错误的..有什么建议吗?

最佳答案

HTTPoison.get!引发异常,而不是返回异常,因此您需要使用try ...rescue... :

try do
response = HTTPoison.get!(url, [], [])
upload(response.status_code, response.body, starting, camera_exid)
do_loop(starting + interval, ending, interval, camera_exid)
rescue
%HTTPoison.Error{reason: reason} ->
IO.inspect "Media: #{reason}!"
:timer.sleep(:timer.seconds(3))
do_loop(starting, ending, interval, camera_exid)
end

然而,这不被认为是好的代码,因为 HTTPoison 也有 get ,它返回 {:ok, response}{:error, error} > 您可以按如下方式使用:

case HTTPoison.get(url, [], []) do
{:ok, response} ->
upload(response.status_code, response.body, starting, camera_exid)
do_loop(starting + interval, ending, interval, camera_exid)
{:error, %HTTPoison.Error{reason: reason}} ->
IO.inspect "Media: #{reason}!"
:timer.sleep(:timer.seconds(3))
do_loop(starting, ending, interval, camera_exid)
end

关于elixir - 模式匹配 HTT 毒 react Elixir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com