¿Puede alguno de ustedes explicar cuáles son las diferencias entre throw
, throws
y Throwable
y cuándo usar qué?Manejo de excepciones: lanzar, arrojar y Throwable
Respuesta
throws
: se utiliza al escribir métodos, declarar que el método en cuestión produce la excepción especificada (comprobado).A diferencia de las excepciones comprobadas, las excepciones de tiempo de ejecución (NullPointerExceptions, etc.) pueden producirse sin que el método declare
throws NullPointerException
.throw
: instrucciones para realmente arrojar la excepción. (O más específicamente, el Throwable).La palabra clave throw viene seguida de una referencia a
Throwable
(normalmente una excepción).
Ejemplo:
Throwable
: Una clase que se debe extender con el fin de crear su propio, personalizado, throwable.
Ejemplo:
Throw
se utiliza para lanzar una excepción, throws
(si adivinado correctamente) se utiliza para indicar que el método puede lanzar en particular excepción, y la clase Throwable
es la superclase de todos los errores y excepciones en Java
tiro - se utiliza para lanzar una declaración Exception.The tiro requiere un solo argumento: un objeto de clase throwable
tiros - se utiliza para especifica que el método puede lanzar una excepción
Throwable - Esta es la superclase de todos los errores y excepciones en el lenguaje Java. puedes lanzar solo objetos que se derivan de la clase Throwable. throwable contiene una instantánea de la pila de ejecución de la rosca en el momento de su creación
throw
: declaración de tirar objetot
dondet instanceof java.lang.Throwable
debe ser cierto.throws
: un token de firma de método para especificar excepciones marcadasthrow
n mediante ese método.java.lang.Throwable
: el tipo principal de todos los objetos que se pueden lanzar (y atrapar).
+1 para la respuesta de la cápsula. – 0x6900
Esto realmente fácil de entender.
El java.lang.Throwable:
La clase
Throwable
es la superclase de todos los errores y excepciones en el lenguaje Java. Sólo objetos que son instancias de esta clase (o una de sus subclases) son lanzada por la máquina virtual de Java o pueden ser lanzados por la sentencia Javathrow
. Del mismo modo, solo esta clase o una de sus subclases puede ser el argumento escriba en una cláusulacatch
. More
La palabra clave tiros se utiliza en la declaración de método, esta especificar qué tipo de excepción [clase Throwable] que puede esperar de este método.
La palabra clave throw se utiliza para lanzar un objeto que es instancia de la clase Throwable.
Para que no ver algunos ejemplo:
creamos nosotros mismos una clase de excepción
public class MyException super Exception {
}
El creamos un método que crear un objeto de nuestra clase de excepción y lanza que el uso de la palabra clave lanzar.
private void throwMeAException() throws MyException //We inform that this method throws an exception of MyException class
{
Exception e = new MyException(); //We create an exception
if(true) {
throw e; //We throw an exception
}
}
Cuando vamos a utilizar el método throwMeAException()
, nos vemos obligados a cuidar de él en forma específica porque tenemos la información que arroja algo, en este caso tenemos tres opciones.
primera opción es el uso de try bloque y catch para controlar la excepción:
private void catchException() {
try {
throwMeAException();
}
catch(MyException e) {
// Here we can serve only those exception that are instance of MyException
}
}
La segunda opción es pasar la excepción
private void passException() throws MyException {
throwMeAException(); // we call the method but as we throws same exception we don't need try catch block.
}
tercera opción es coger y volver a emitir la excepción
private void catchException() throws Exception {
try {
throwMeAException();
}
catch(Exception e) {
throw e;
}
}
Reanudar, cuando necesite detener alguna acción, puede lanzar la Excepción que se restituirá hasta que no se encuentre en el servidor mediante un bloque try-catch. Donde sea que use el método que arroje una excepción, debe manejarlo mediante el bloqueo try-catch o agregar las declaraciones a sus métodos.
La excepción de esta regla es java.lang.RuntimeException
que no tienen que declararse. Esta es otra historia como el aspecto del uso de excepciones.
Buen ejemplo. Gracias por su tiempo y esfuerzo al explicarme esto. – Sumithra
Throw:
se utiliza para tirar de hecho la excepción, mientras que lanza es declarativo para el método. No son intercambiables.
throw new MyException("Exception!);
Lanza:
Esto es para ser utilizado cuando no se está utilizando la sentencia catch intento en su código, pero ustedes saben que esta clase en particular es capaz de lanzar tal y tal excepción (solo las excepciones). En esto no usa el bloque try catch pero escribe usando la cláusula throw en el punto apropiado de su código y la excepción se lanza al llamador del método y es manejada por él. También se utiliza la palabra clave throws cuando la función puede arrojar una excepción marcada.
public void myMethod(int param) throws MyException
La misma respuesta que el anterior pero con copiar y pegar el placer:
public class GsonBuilderHelper {
// THROWS: method throws the specified (checked) exception
public static Object registerAndRun(String json) throws Exception {
// registering of the NaturalDeserializer
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Object.class, new NaturalDeserializer());
Gson gson = gsonBuilder.create();
Object natural = null;
try {
// calling the NaturalDeserializer
natural = gson.fromJson(json, Object.class);
} catch (Exception e) {
// json formatting exception mainly
Log.d("GsonBuilderHelper", "registerAndRun(json) error: " + e.toString());
throw new Exception(e); // <---- THROW: instance of class Throwable.
}
return natural;
}
}
Throwable :
en Java, se drieved toda clase de execption del error y de la clase java.lang.Throwable. Es la parte superior de la jerarquía de clases de error y excepciones. Solo los objetos que son instancias de esta clase (o una de sus subclases) son lanzados por la Máquina Virtual de Java o pueden ser lanzados por la declaración throw de Java.
Throws:
es un modificador posterior al método y especifica qué ejecuciones puede ejecutar el método. Si se marcan excepciones, el compilador garantizará que el código que invoca ese método debe capturar estas excepciones marcadas.
Throw:
declaración se utiliza para arrojar un error o excepciones. La instrucción throw requiere un único argumento: una instancia de cualquier subclase de la clase Throwable o Throwable. La ejecución de la instrucción de lanzamiento activa la JVM para lanzar esta excepción y hace que se produzca una excepción.
Listando ...
Throw
- Java
throw
palabra clave se utiliza parathrow
explícitamente una excepción. - La excepción comprobada no se puede propagar utilizando
throw
solamente. Throw
seguido de una instancia.Throw
se usa dentro del método.- No se pueden
throw
múltiples excepciones.
Lanza
- Java
throws
palabra clave se utiliza para declarar una excepción. - La excepción controlada se puede propagar con
throws
. Throws
seguido de la clase.Throws
se utiliza con la firma del método.- Puede declarar excepciones múltiples p.
public void method()throws IOException,SQLException
Hay 2 tipos principales de Excepciones:
Excepciones tiempo de ejecución (no marcado): por ejemplo. NullPointerException, ClassCastException, ..
Excepciones controladas: por ej. FileNotFoundException, CloneNotSupportedException, ..
Las excepciones de tiempo de ejecución son excepciones que ocurren en el tiempo de ejecución y el desarrollador no debe intentar atraparlo o detenerlo. Solo escriba el código para evitarlos o emita un comando throw, cuando se cumplan los criterios de error. Usamos throw dentro del cuerpo del método.
public Rational(int num, int denom){
if(denom <= 0) {
throw new IllegalArgumentException("Denominator must be positive");
}
this.num=num;
this.denom=denom;
}
Sin embargo, para excepciones comprobadas, la JVM espera que lo maneja y dará error de compilación si no se maneja por lo que declara que lanza ese tipo de excepción, como se ve a continuación en el método clone().
Class Employee{
public Employee clone() throws CloneNotSupportedException{
Employee copy = (Employee)super.clone();
copy.hireDate = (Date)hireDate.clone();
return copy;
}
}
1. throw keyword used to throw user defined exceptions.(we can throw predefined exception too).
2. Using throws keyword we can explicitly provide the information about unhand-led exceptions of the method to the end user, Java compiler, JVM.
tiro vs lanza
http://www.instanceofjava.com/2016/04/exception-handling-interview-questions.html
- 1. ¿Qué arrojar al lanzar excepciones de C++?
- 2. Declarar y lanzar contra lanzar sin excepciones
- 3. Cómo arrojar excepciones en nuevos rinocerontes 3.5
- 4. ¿Pueden los fabricantes arrojar excepciones en Java?
- 5. Devolver después de arrojar excepciones
- 6. Manejo de excepciones AOP
- 7. Mejores prácticas: arrojar excepciones desde las propiedades
- 8. Manejo de múltiples excepciones
- 9. Punteros inteligentes y manejo de excepciones
- 10. ASP.NET MVC: ¿Dónde arrojar las excepciones?
- 11. Manejo de excepciones Java dentro de "eventos"
- 12. "tiros Throwable" buenas prácticas
- 13. Cuándo devolver bool, lanzar una excepción y qué excepción arrojar
- 14. ¿Dónde manejo las excepciones asincrónicas?
- 15. Lanzar excepciones y notificar al usuario
- 16. ¿La mala práctica de "arrojar excepciones" es?
- 17. Cómo lanzar y gestionar excepciones en R6RS Esquema
- 18. continuación de Scala y manejo de excepciones
- 19. ¿Qué excepciones puede arrojar una referencia de servicio generada?
- 20. Robusto manejo de excepciones Javascript
- 21. Manejo de excepciones JSF2
- 22. Wcf manejo de excepciones
- 23. Lanzar excepciones comprobadas de clases internas anónimas
- 24. manejo de excepciones en node.js y express
- 25. Monotouch: Servicios WCF y manejo de excepciones
- 26. Programación defensiva y manejo de excepciones
- 27. BackgroundWorker manejo de excepciones
- 28. manejo de excepciones ofstream
- 29. Capturando varias excepciones y volviendo a lanzar una excepción general
- 30. GSON y Java Throwable
Java tiene ninguno. Tiene un método 'throw' de la clase Throwable, y tiene una palabra clave' throws' utilizada en los encabezados de métodos. Son dos cosas bastante diferentes. Olvídate de 'throws' al principio y solo averigua qué hace' throw'. 'throws' solo es necesario para mantener feliz al compilador. –