2017-09-02 3 views
3

Ich verwende System.cmd Befehl mit einer Datei zu arbeiten. Wenn die Dateien jedoch nicht auf dem System gefunden werden, wird , speziell Erlang error: :enoent ausgelöst. Wie kann ich diesen Fehler mit der Case-Funktion umgehen? Hier ist mein Code so weit:Elixir/Phoenix Handhabung Erlang Fehler

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

Diese Fälle arbeiten für Fehler von OS (ob startet oder nicht), aber nicht für die erlang Fehler, was in Phoenix erzählte mir von: ENOENT. enter image description here

Antwort

5

Sie müssen try/rescue verwenden.

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 

Wenn die ausführbare Datei nicht existiert, sollten Sie %ErlangError{original: :enoent} vom IO.inspect in rescue gedruckt sehen.

+0

Hey @Dogbert, danke für deine Antwort! Ich wusste nichts über Versuch/Rettung, werde jetzt nachsehen. – Ilya