2012-11-06 13 views
18

Ho il seguente:Java tiro e diventa nulla su Android

 try { 
     response.statusCode = urlConnection.getResponseCode();  
    } catch(IOException e) { 
     throw e; 
    } 

guardo il debugger e e = UnknownHostException

Dopo il tiro ho:

try { 
     NetworkResponse response = NetworkHelper.getByURL(url); 
    } catch(Exception e) { <------- IT LANDS HERE, BUT e=null 
     ExceptionHelper.announce(e);   
     throw e; 
    } 

Così, dopo il lancio il mio blocco catch ottiene l'eccezione ma è nullo. Il debugger mostra e = null.

Non ho idea del perché questo accada.

+0

Puoi mostrare la gerarchia di chiamata? – home

+1

È ancora nullo dopo l'avanzamento alla riga successiva? –

+7

prova e.printStackTrace() e verifica se viene stampato, quindi prova e.getMessage() e verifica se getMessage() è nullo. Se è (che penso), è perché si lancia un'eccezione (livello superiore) e non un'eccezione specifica. – Carnal

risposta

1

Non vedo nemmeno il punto di catturare l'eccezione se la risuscitate immediatamente. Aggiungi un throws IOException a tale metodo e consenti all'altra catch di gestirlo.

+0

Mentre il tuo argomento è generalmente valido, in questo caso non aiuta: l'OP ha già spiegato questo, ha anche altre istruzioni nel blocco catch, come la registrazione, ecc. – ppeterka

Problemi correlati