Fork me on GitHub
#clojure-italy
<
2019-08-14
>
skuro07:08:07

12
😍 4
Andrea Imparato11:08:32

domanda di architettura, come gestite voi le eccezioni in clojure? ad esempio, se c'è un main che chiama una funzione che deve leggere un file, se il file non esiste, come gestite il flow per l'eccezione?

Andrea Imparato11:08:08

usate ex-info ad esempio?

skuro11:08:48

io si, cerco di usare ex-info piu' possibile in modo da mantenere contesto. cose che non hanno funzionato con questa strategia sono state le integrazioni con log aggregators come sentry

Andrea Imparato11:08:34

eh quelle cose sono troppo avanzate per me per adesso, cmq se la via da seguire è ex-info è perfetto per adesso 🙂

mpenet12:08:53

ex-info + qbits.ex, poi usiamo ex per indicare si deve essere mandato a sentry o a l user etc etc

skuro12:08:54

oh! mi ricordo di aver visto qbits.ex in precedenza ma me l'ero scordato. grazie per il reminder!

nilrecurring13:08:25

Confermo che qbits.ex è fantastica 👏

🙂 4
Andrea Imparato14:08:52

Un'altra domanda per voi: come la pensate su check nil vs throw exception, sempre riferito ad una funzione che legge un file e lo valida. Come vedete questa funzione se stampa a video il problema e ritorna nil se qualcosa é andato storto vs lancia 2 tipi di eccezioni, una per il file trovato ed una per il file non valido e resta al chiamante gestire cosa fare?

skuro14:08:24

di impulso mi vien da dire che eccezioni per i casi di - file non trovato - file non valido sono preferibili

skuro14:08:09

nil non ti permetterebbe di distinguere tra tali casi (e potenzialmente il caso di file vuoto, ammesso e non concesso che file vuoto non ricada nella categoria file non valido)

skuro14:08:51

se pero' la logica che stai sviluppando non richiede questo tipo di precisione, allora nil e via

Andrea Imparato14:08:36

Si a me serva che vada semplicemente tutto bene, se qualcosa va storto non mi interessa che il caller sappia cosa é andato storto, solo l utente ed é per questo che stampo a video il messaggio

andrea.crotti17:08:03

Puoi anche usare assert in teoria

andrea.crotti17:08:16

Se non ti interessa di come brutalmente scoppia

reborg18:08:58

il problema degli assert e’ appunto che se ce n’e’ piu’ di una (o non sai dove sono) non ti dice niente, ne file ne linea

andrea.crotti18:08:57

Beh ci puoi mettere un messaggio comunque

andrea.crotti18:08:14

Quindi l'errore può essere comunque chiaro

mpenet20:08:10

E possono sparire con un flag mi sembra