Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 23/02/15, 17:28:07
Avatar de WHK
WHK WHK no está en línea
Usuario poco activo
Mensajes: 11
 
Fecha de registro: feb 2015
Mensajes: 11
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Mejores prácticas para el uso de try y catch

Hola, una pregunta, digamos que tengo una clase la cual tiene 5 funciones en la cual cada función trae llamadas a funciones nativas de Android para manipular archivos, bases de datos, etc.

La función que manipula base de datos trae una función que obligadamente debo encerrar dentro de un try catch, cuando el código cae dentro de un catch que es lo mejor? utilizar un control propio de errores para comunicar a la clase que hubo un error? hacer que la misma función ejecute un throw?

Suponiendo que lo óptimo es que mi función ejecute un throw, como puedo ejecutarlo desde la misma función para que la clase haga el control y no la función?

Por ejemplo, tengo la clase de datos de personas y cuando obtiene los datos desde internet vía json es necesario encapsular dentro de un try catch, como puedo hacer que ahora la función ejecute un throw para que la clase controle el problema? ya que la función de json me obliga a encerrar el código dentro del try catch y dentro del catch no puedo ejecutar un new throw.

Por ejemplo:

Código:
public void demo() throws Exception
{
    try{
      // ...
      String nombre = json_object.getString("nombre");

   }catch(Exception e){
      // ???
   }
}
La idea es que desde la clase principal pueda decir por ejemjplo:

Código:
try{
   demo();
}catch(Exception e){
   // Toast con el mensaje de error e.getessage...
}
Responder Con Cita


  #2  
Viejo 23/02/15, 18:27:43
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Si el método lo declaras como "throws Exception" ya no es necesario que hagas un try/catch dentro del método para capturar posibles excepciones pues, sea del tipo que sea (todas heredan de Exception), se propagará automáticamente en caso de lanzarse.

Dónde es mejor tratar una excepción depende de cómo tengas estructurado el programa. Lo importante es que se entere quien se tenga que enterar, y que no se entere al que le da igual.
Responder Con Cita
  #3  
Viejo 23/02/15, 19:20:54
Avatar de WHK
WHK WHK no está en línea
Usuario poco activo
Mensajes: 11
 
Fecha de registro: feb 2015
Mensajes: 11
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Hola gracias, lo hice declarando la función como throws Exception pero igual el android studio me marca de rojo la función jsonObject.getInt() porque no está encerrado bajo ningún try catch y no me deja compilar, lo normal sería que quede sin try catch para que la excepción viaje a través de la función.


Última edición por WHK Día 23/02/15 a las 19:24:44
Responder Con Cita
  #4  
Viejo 23/02/15, 19:30:06
Avatar de WHK
WHK WHK no está en línea
Usuario poco activo
Mensajes: 11
 
Fecha de registro: feb 2015
Mensajes: 11
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Creo que ya me di cuenta del problema, es porque estoy llamando a un thron dentro de la función del runnable y no de la función principal :p

El tema es... como hago que el thrown llegue hasta la función superior? ya que al runnable no pude establecer el throws Exception delante de la función.
Responder Con Cita
  #5  
Viejo 24/02/15, 06:41:56
Avatar de Braaank
Braaank Braaank no está en línea
Usuario muy activo
Mensajes: 1,149
Compra y venta: (2)
 
Fecha de registro: ago 2012
Localización: Madrid
Mensajes: 1,149
Modelo de smartphone: One Plus 3T, iPad Air 32 GB
Versión de ROM: Stock
Tu operador: Orange
Mencionado: 1 comentarios
Tagged: 0 hilos
No entiendo muy bien que es lo que intentas conseguir, pero efectivamente en el run no puedes ponerle un throws debido a que no está especificado así en la interfaz. Yo pondría un try/catch.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 12:06:39 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007