Perché c'è "Errore sconosciuto" nella vita reale? [duplicare]

1

Come programmatore, faccio sempre del mio meglio per spiegare cosa è successo nel codice quando devo mostrare un messaggio di errore, ad esempio:

try {
    int a = b / 0;
} catch (NumberFormatException ex) {
    System.out.println("There was a problem with the number: " + ex.getMessage());
}

Penso che questa sia una pratica di base che tutti dovrebbero seguire. Ma nella vita reale, vediamo ancora alcuni errori "sconosciuti" senza codice di errore, né qualcosa che potremmo seguire per trovare il motivo, come questo o questo .

Voglio dire, ogni "errore" ha una ragione, quindi perché c'è "Errore sconosciuto"? Qualcuno può spiegarlo per me?

    
posta TrungDQ 20.02.2015 - 08:21
fonte

2 risposte

6

Perché chiunque fosse a capo del sistema informativo non ha ritenuto utile conservare queste informazioni.

Questo è il motivo fondamentale in tutti in questi casi. Tuttavia, dietro questa ipotesi possono esserci molti motivi diversi (e in effetti possono essere sia ragionevoli che irragionevoli).

  • Qualcuno non pensava che qualcosa potesse andare storto affatto . È raro che gli sviluppatori siano consapevoli di tutte le cose che possono andare storte, e alcuni non hanno alcuna nessuna consapevolezza del potenziale per condizioni eccezionali, eccetto quelle che hanno loro stessi incontrate.

  • Non pensavano che la conservazione delle informazioni valesse lo sforzo aggiuntivo. L'utilizzo di try su ogni azione che potrebbe generare eccezioni è un orribile sforzo per la leggibilità e le informazioni che vengono conservate possono spesso essere completamente incomprensibili per l'utente medio.

  • Sempre più persone lavorano su parti isolate di sistemi di grandi dimensioni e non hanno le informazioni di cui avrebbero bisogno per farlo. Con i sistemi distribuiti su Internet, molto spesso i dettagli di un errore che ha causato un errore di servizio non lasciano mai il server su cui si è verificato. Qualsiasi codice in esecuzione su una macchina diversa è quindi fondamentalmente in grado di spiegare il problema.

  • I dettagli completi non sono ciò che vorresti vuoi . Una divisione per zero è intuitivamente comprensibile, ma la stragrande maggioranza delle tracce dello stack di eccezioni sono in definitiva causate da variazioni di "resourceManager is null ". È tecnicamente vero, ma non ti aiuta affatto con la comprensione o la risoluzione del problema. Il resourceManager dovrebbe essere annullabile (cioè il mio codice è difettoso, o il loro)? Come ottengo un resourceManager valido? È successo perché ho avuto accesso a qualcosa in anticipo? Come posso evitarlo? Ho anche bisogno di un gestore risorse, o quel modulo è una parte del sistema che non dovrei usare in primo luogo? Tutte queste e migliaia di altre domande sono non risposte da una traccia dello stack di eccezioni, non importa quanto meticolosamente lo si riporti, quindi forse conservare le specifiche della condizione di errore non è così utile come sarebbero altre misure di mitigazione .

risposta data 20.02.2015 - 08:32
fonte
0

I programmi per computer crescono su larga scala e diventano molto complessi. Agiscono secondo una logica molto precisa (istruzioni macchina), e ci sono molti fattori ambientali che possono influenzare questa logica e cambiarne la direzione.

Quindi a volte abbiamo solo [può] catturare si è verificato un errore e per capirne il motivo è necessaria un'analisi approfondita del software e persino del sistema operativo e forse un sacco di tempo.

Potresti aver notato che molti scenari sono possibili per un piccolo programma, tali scenari crescono esponenzialmente quando il software si ingrandisce e si collega a Sistema operativo o dispositivi I / O.

    
risposta data 20.02.2015 - 08:39
fonte

Leggi altre domande sui tag