2017-09-02 3 views
3

私はSystem.cmdコマンドを使用してファイルを操作しています。ただし、ファイルがシステム上に見つからない場合は、、具体的にはErlang error: :enoentとなります。 case関数でこのエラーを処理するにはどうすればよいですか?ここでは、これまで私のコードは次のとおりです。エリクサー/フェニックス処理エラーエラー

case System.cmd(generate_executable(settings), ["start"]) do 
    {output, 0} -> 
    IO.inspect("Start successful") 
    {output, error_code} -> 
    IO.inspect("Start failed") 
end 

この例は、(開始であるかどうか)OSからの過ちのために動作しますが、ないErlangのエラーのため、について私に言っフェニックスの結果:ENOENT。 enter image description here

答えて

5

try/rescueを使用する必要があります。実行ファイルが存在しない場合

try do 
    case System.cmd(generate_executable(settings), ["start"]) do 
    {output, 0} -> 
     IO.inspect("Start successful") 
    {output, error_code} -> 
     IO.inspect("Start failed") 
    end 
rescue 
    error -> 
    IO.inspect(error) 
end 

、あなたは rescueIO.inspectによって印刷さ %ErlangError{original: :enoent}が表示されるはずです。

+0

ちょっと@Dogbert、あなたの答えに感謝!私はtry/rescueについて知りませんでした。今見てみましょう。 – Ilya

関連する問題