Ya tengo varias clases que implementan SwingWorker para mostrar barras de progreso y cosas por el estilo en mi interfaz gráfica, hasta ahí ningún problema. Esas clases no esperaban ningún tipo de excepción en la ejecución de doInBackground(), pero ahora tengo una clase nueva que si espera una excepción, y no se cómo manejarla.
Código Java:
Ver original
@Override //proceso... geoCoordenadas = geoAddress.getCoordinate(); //Este método lanza la excepción GeoException. //proceso... } @Override protected void done() { csvActual.setText(""); progreso.setValue(100); } }
Parto del código de arriba. Cuando tengo una GeoException doInBackGround() la reconoce (lo se porque si pongo un catch dentro la captura) pero que yo vea no la propaga a ningún lado, ¿a donde se supone que va esa excepción? Mi intención es que la excepcion se propague hasta la GUI para poder mostrar allí un mensaje de error (la excepción está relacionada con la conexión a internet).
He visto por internet que el manejo de excepciones en el método doInBackground no es sencillo, y también he mirado infinidad de posts que no entiendo del todo.
Alguno dice que hay que llamar a get() en el método done(), que quedaría de esta forma:
Código Java:
Ver original
@Override protected void done() { try { csvActual.setText(""); progreso.setValue(100); get(); cerrarConexion(); } catch (ExecutionException ex) { cerrarConexion(); } }
Pero ahí me surgen aún mas dudas. Puedo propagar un RuntimeException, pero estoy en las mismas, ¿donde se esta propagando?. Otro asunto es que no me deja hacer protected void done() throws GeoException{...} así que estoy propagando un RuntimeException cuando en realidad quiero propagar una GeoException.
Como podeis ver estoy bastante perdido, así que agradeceré mucho cualquier tipo de idea o indicacion.
Gracias por adelantado y un saludo