Ho letto che dovremmo catturare solo le eccezioni che possono essere gestite, il che rende cattiva la classe delle eccezioni di base (C # in questo caso) una cattiva idea (oltre ad altri motivi). Attualmente faccio parte di un progetto in cui finora non ho ancora visto altro che l'eccezione di base catturata. Ho detto che è considerato una cattiva pratica farlo, ma la risposta è stata "Questo servizio deve essere eseguito 24/7, quindi è così".
Dal momento che non ho avuto una buona risposta su come gestire correttamente le eccezioni in un programma che deve essere eseguito 24/7, ora sono qui. Non sono riuscito a trovare informazioni / suggerimenti su come gestire la gestione delle eccezioni in programmi / servizi "critici" che devono essere eseguiti 24 ore su 24 (e in questo caso credo che potrebbe andare bene se il servizio è inattivo per un minuto o due, quindi nemmeno critici). Capisco che dipende dalla natura esatta del programma. I requisiti per un programma che può causare problemi potenzialmente letali sono abbastanza diversi rispetto a uno scanner di log per un gioco online.
Due esempi:
1: un servizio di anticipazione per i clienti delle ferrovie della Bretagna, utilizzato durante la ricerca online di stazioni ferroviarie.
2: Un programma che controlla automaticamente gli interruttori ferroviari per le ferrovie di cui sopra sulla base delle informazioni in tempo reale fornite da vari sensori nei binari, treni, ecc.
Il primo programma probabilmente non causerebbe un grosso problema se si interrompesse per un minuto o due, dove quest'ultimo potrebbe causare vittime umane. Suggerimenti su come gestirli? Puntatore a dove posso trovare maggiori informazioni e riflessioni su questo problema?
catch Exception
. Ciò non significa che il programma funziona , significa che i guasti lasciare lo stato dell'applicazione ottenere danneggiato mentre continua ad eseguire, un luogo molto più pericoloso di essere. Un programma bloccato potrebbe essere disastroso, ma un programma che si trova in uno stato non valido ma che sta ancora eseguendo azioni può essere attivamente disastroso.