IllegalStateException vs. IllegalArgumentException

4

In hanno scritto una funzione che si aspetta che il chiamante passi in un file di configurazione come XML. Quindi analizzo questo file dato ed estrai qualcosa che poi restituisco.

In questa funzione (almeno) possono accadere due cose "cattive":

  1. Il file specificato non esiste o non è accessibile in alcun modo
  2. Durante l'analisi / convalida del file, viene trovato del contenuto non previsto

La prima cosa è chiaramente un IllegalArgumentException . Tuttavia non sono sicuro di quale tipo di eccezione sarebbe il secondo caso. È anche un IllegalArgumentException perché mi aspetto (per contratto di documentazione) che l'input sia in una forma valida? O è piuttosto un IllegalStateException in quanto il parametro dato è formale corretto ma solo dopo l'analisi non posso fare ulteriori passaggi in quanto comporterebbe un comportamento indesiderato?

O è anche qualcos'altro?

    
posta valenterry 27.06.2014 - 15:22
fonte

2 risposte

3

Nessuno dei due. Come altri hanno sottolineato, non è chiaramente una IllegalStateException.

E meglio di IllegalArgument sarebbe FileNotFoundException o ParseException , (o forse XMLParseException) che corrisponde esattamente alla descrizione di "cose cattive" 1 e 2.

    
risposta data 27.06.2014 - 18:13
fonte
9

I Javadoc di IllegalStateException dicono

Signals that a method has been invoked at an illegal or inappropriate time

Direi che non importa quando viene chiamato il tuo metodo o in quale stato è la JVM o il tuo contesto - l'errore di parsing rimarrà finché il file non è corretto. Quindi mi sembra che un IllegalArgumentException sia più appropriato.

    
risposta data 27.06.2014 - 15:42
fonte

Leggi altre domande sui tag