Fish Shell:
Tratamento de erros

Como fazer:

Para capturar erros no Fish, conte com o comando status e condicionais. Digamos que o ping falhe; veja como detectar isso:

ping -c 1 example.com
if not status is-success
    echo "Algo estranho aconteceu com o ping."
end

Saída de exemplo se o ping falhar:

Algo estranho aconteceu com o ping.

Para lidar com um código de erro específico, use status --is:

false
if status --is 1
    echo "Capturado um erro com código 1."
end

Saída de exemplo:

Capturado um erro com código 1.

Para uma abordagem mais robusta, considere usar uma função:

function try_ping
    ping -c 1 example.com
    or begin
        echo "Ping falhou com status $status"
        return 1
    end
end

try_ping

Mergulho Profundo

O tratamento de erros no Fish não corresponde ao paradigma try/catch que você pode conhecer de linguagens de alto nível. Em vez disso, temos statuses de saída diretos fornecidos pelo comando status.

Historicamente, em sistemas do tipo Unix, um status de saída 0 significa sucesso, enquanto qualquer valor não nulo indica um erro, o que geralmente reflete diferentes razões de falha. Esta convenção é empregada pela maioria das utilidades de linha de comando e, portanto, pelo próprio Fish.

Alternativas para verificações de status no Fish incluem o tratamento de sinais via trap em outros shells, mas o Fish prefere uma verificação de status mais explícita, porque é mais limpa e menos propensa a efeitos colaterais.

Em termos de implementação, o tratamento de erros no Fish permanece simples e poderoso, em grande parte devido à sua natureza não bloqueadora e ênfase em sintaxe clara, como mostrado nos exemplos. Os códigos de erro se integram bem com as funções, permitindo uma gestão de erros modular e legível.

Veja também