Qual è l'approccio migliore per gestire gli errori e garantire la solidità del software? [chiuso]

1

Sto sviluppando una nuova applicazione desktop da zero usando C #, prima di aprire lo studio visivo e iniziare a digitare sulla tastiera. Voglio preparare un solido design per il mio software. La sfida principale per me è come gestire gli errori e le eccezioni. So che .Net Framework fornisce una buona gestione degli errori, ma oltre a questo ho bisogno di aumentare la robustezza del mio software. Quindi voglio sapere se ci sono buone pratiche per evitare il crash, il blocco o il blocco del software? Se ho bisogno di sviluppare uno strumento separato che diagnostica il mio software, quale dovrebbe essere e cosa dovrebbe fare?

    
posta K.chaa 15.03.2018 - 16:11
fonte

2 risposte

6

handle errors and exceptions

Gestisci le eccezioni da cui puoi recuperare. Invia quelli che non puoi.

Un file non trovato è un problema ma ha bisogno di distruggere tutto il lavoro che l'utente ha fatto? Dì loro che non potevano caricare quello che stavano cercando di caricare. D'altra parte, se un'eccezione lascia il sistema in uno stato strano, non peggiorare le cose catturandole e fingendo che le cose vadano bene quando non lo sono. Se non puoi prevedere cosa succederà al prossimo lancio e morte.

best practices to avoid Software crashing, hanging or freezing

Non perdete memoria.

Ciò che rende gli sviluppatori di software per server straordinari è la loro capacità di creare software in grado di funzionare per mesi senza bisogno di un riavvio. Ciò che rende i sistemi Linux così sorprendenti è la loro capacità di funzionare per mesi senza bisogno di un riavvio.

Se perdi memoria, il tuo software non è sorprendente. Avrà bisogno di un riavvio. Anche in C # questo può succedere. Certo, ha un netturbino, ma tutto ciò che devi fare è tenere un riferimento a qualcosa per più tempo del necessario ed è una perdita. Il garbage collector non ti aiuterà qui. Se questa cosa viene creata "come necessario", sei in grossi guai perché continuerai a farne di più e non butterai mai via la vecchia merda.

Il modo stupido e semplice per rilevare alcune di queste perdite è controllare la tua app eseguita nel task manager. Che cosa fa l'uso della memoria nel tempo?

If I need to develop a separate tool that diagnostic my software what should it be and what should it do

Prova.

Test automatici. Test unitari, test di integrazione, test end-to-end. Test manuali Basta testare. Il test è una cosa molto intima quindi non aspettarti che qualcosa compri solo per risolvere magicamente questo problema. Questo è lavoro. È altrettanto lavoro, se non di più, come rendere l'applicazione stessa. Ma paga.

    
risposta data 15.03.2018 - 16:39
fonte
1

Guarda le eccezioni.

Una strategia generale sarebbe

  • quando si verifica un errore, registrarlo; scriverlo in un file o database di errori. Questo è utile per monitorare l'applicazione e diagnosticare gli errori

  • se è recuperabile; quindi recuperare. Assicurati che il tuo sistema sia in uno stato normale e continua. Ciò potrebbe comportare l'eliminazione di alcune transazioni o pacchetti. Se potrebbe essere un problema registrarlo.

  • se non è recuperabile; consentire all'utente di salvare il suo lavoro e fare un arresto pulito

Proseguendo dopo che il sistema è rotto, solo il problema si complica.

Non esiste una "strategia di gestione degli errori" che consenta il recupero dai bug. Il tuo processo di sviluppo dovrebbe averli eliminati prima che l'utente si avvicini al tuo sistema.

Esistono strumenti di analisi statica e strumenti di test per aiutarti a trovare problemi nel codice.

    
risposta data 15.03.2018 - 16:37
fonte

Leggi altre domande sui tag