Come è nata l'idea di gestione delle eccezioni nei linguaggi di programmazione? [duplicare]

13

Oggi se guardiamo qualsiasi lingua, la gestione delle eccezioni è quasi una funzione obbligatoria. Le lingue che non l'avevano in precedenza lo stanno implementando nelle versioni successive.

Mi chiedo come sia emersa questa idea, perché le eccezioni hanno un flusso totalmente separato in parallelo con il flusso del codice principale e possono interrompere il flusso principale in qualsiasi punto.

IMHO l'idea è un po 'tesa alla mente. Quindi, come è nata questa idea? Un po 'di storia?

Nota per evitare la chiusura (Non ha funzionato): E per Storia non intendevo le date, i tempi, i nomi e i luoghi. In realtà volevo sapere la storia informale di come l'idea fosse esplosa nelle lingue. Proviene da qualsiasi tipo di best practice di programmazione? O è stata un'idea per qualcuno al primo posto?

    
posta Gulshan 25.07.2011 - 18:56
fonte

3 risposte

4

THROW era in Lisp negli anni '70 e longjmp era in C, abbinato a setjmp nello stesso periodo.

Aggiunto: stai chiedendo a come hanno avuto l'idea.

OK, se stai codificando in qualsiasi lingua, scrivendo routine, chiamando routine, cercando di capire come gestire le condizioni che non ti aspetti, hai opzioni come "imposta una variabile di errore globale e restituisci", o "avere un codice di errore che il chiamante deve controllare".

Inevitabilmente inizi a desiderare strongmente "Deve esserci un modo migliore per farlo. Non potrei sparare da qui?" Se stai facendo un linguaggio di assemblaggio, in linea di principio sai che è molto semplice.

Questo è come .

    
risposta data 25.07.2011 - 19:01
fonte
3

La prima lingua di cui sono a conoscenza che includeva la gestione delle eccezioni era PL / I, nel 1964 1 .

Ha dato alla gestione delle eccezioni un po 'di brutto nome, in quanto li utilizzava per gestire le situazioni che dubito che qualcuno avrebbe trattato come eccezioni nella maggior parte dei linguaggi moderni (ad esempio, raggiungendo la fine di un file).

È stato in gran parte richiesto da Fortran, che (nelle prime versioni) non forniva alcun modo per rilevare tali condizioni (incluso il rilevamento quando hai raggiunto la fine di un file).

1 È stato originariamente definito nel 1964. I compilatori effettivi sono arrivati un po 'più tardi e la definizione era ancora in flusso fino al 1967 o al 1968.

    
risposta data 25.07.2011 - 19:06
fonte
0

È emerso come uno strumento di debug, ma presto è diventato un modo per implementare la fase di esecuzione in linguaggi come LISP e C.

Esistono tuttavia diversi tipi di / modi per preformare la gestione delle eccezioni ed è tutto basato sulla prospettiva.

Probabilmente stai parlando di gestione delle eccezioni sotto forma di istruzioni try-catch, tuttavia questo è anche un tipo di gestione delle eccezioni manuale (C ++), ed è stato usato per sempre:

    int* pA;
    pA = new int[20];
    if( pA == 0 )
       cout<<"Memory could not be allocated!"<<endl;
    
risposta data 25.07.2011 - 19:58
fonte

Leggi altre domande sui tag