2010-05-22 5 views
7

Questo potrebbe sembrare strano ...
Ma non l'ho capito.Terminologia Java: perché l'errore in fase di compilazione e non l'eccezione in fase di compilazione?

Perché dobbiamo compile-time error e non compile-time exception in java?

Intendo dire che non diciamo mai compile-time exception.
tendiamo a dire come compile-time error.

C'è qualche motivo specifico per lo stesso ??
Qualsiasi suggerimento è il benvenuto ....

Grazie!

+0

@All: Perché chiamiamo "eccezioni in fase di compilazione' e non" errore in fase di compilazione', come "eccezioni controllate" ?? –

+2

Un'eccezione non è sempre un problema con il programma. Il termine "eccezione" ha un significato tecnico specifico nel contesto di un programma per computer. Vedi la spiegazione che ho postato. – RMorrisey

risposta

10

La ragione di ciò è che un'eccezione è qualcosa generata durante l'esecuzione di un programma. Java ha un tipo specifico per questo, la classe Exception.

In fase di compilazione, il codice non è in esecuzione, quindi non può generare un'eccezione. In effetti, è corretta esecuzione del compilatore per trovare errori nel codice - certamente non un caso di eccezione!

0

Un'eccezione è il nome specifico per un errore che può essere gestito all'interno della logica del software. Un errore è semplicemente questo, un errore di battitura o semplicemente un codice errato.

+0

Java har runtime * errori * pure. – aioobe

+0

Gli errori di runtime sono quelli che chiamiamo eccezioni non gestite – blissapp

+0

Forse li chiami così, quelli di Sun no. (c.f. javadoc per java.lang.Error). – meriton

1

Gli errori di compilazione del tempo sono il risultato dell'incapacità del software da creare come da istruzioni. Ad esempio:

String myString = new ButtonEvent(); 

è un errore di compilazione. Mentre un'eccezione è qualcosa che viene catturato durante l'elaborazione del software.

try{ 
    while(file.readNextLine() != file.EOF){ 
    } 
} 
catch(UnopenedException ex){ 
} 

Qui, abbiamo ipotizzato che il file potesse essere correttamente aperto ed era stato. L'eccezione è per quei casi "eccezionali" in cui non si verificava l'apertura del file.

4

L'eccezione in java è molto diversa dall'errore di compilazione. Non abbiamo il termine compile time exception. Perché l'eccezione è che succede qualcosa che non ti aspetti che accada. Abbiamo solo un'eccezione controllata e non controllata. Con l'eccezione verificata, in tempo di compilazione, il compilatore ti costringerà a prenderlo, ma è non un errore. Non prenderlo, non è possibile compilare il programma ma non si tratta di un errore di compilazione.

2

L'eccezione è qualcosa di più di un flusso imprevisto che può essere gestito. L'errore del tempo di compilazione è più simile al codice non valido. Quindi il codice non viene nemmeno compilato .. Quindi il termine "errore" poiché indica un problema più grave che deve essere risolto.

3

Un errore indica che c'è un problema con il programma. Un'eccezione è un costrutto specifico che interrompe il flusso di controllo del programma e svolge lo stack, acquisendo informazioni sullo stato dello stack in modo che possa essere segnalato.

Un'eccezione può essere utilizzata per indicare un errore, ma non sempre.Ad esempio:

void startOperation() { 
try { 
    while (someComplexOperationIsOnGoing()) { 
    checkRestart(); 
    } 
} 
catch (RestartException re) { 
    startOperation(); 
} 
} 

void checkRestart() { 
if (shouldRestart()) { 
    throw new RestartException(); 
} 
} 

Questo esempio di codice incompleto è destinato a mostrare un caso in cui un'eccezione non è un errore. Questa non è sempre la migliore pratica; ma è usato in alcuni casi in cui l'intento è quello di interrompere il flusso di controllo in profondità nel programma (come il reindirizzamento della pagina in un framework web, quando risponde a una richiesta HTTP) e restituire il controllo a un livello più alto dello stack . L'espressione l'eccezione fa riferimento al meccanismo che interrompe il programma.

In java, esiste una classe Eccezione che incapsula questo comportamento. La classe Errore interrompe anche il flusso di controllo allo stesso modo di un'eccezione; ma è riservato solo a problemi gravi e irrecuperabili che avvengono in fase di esecuzione. Viene utilizzato, ad esempio, quando la JVM esaurisce la memoria e non può creare nuovi oggetti.

+1

Addendum: E poiché un errore di compilazione non è recuperabile, ha più senso chiamarlo errore che eccezione. – meriton