¿En qué situaciones las usa?Cuándo usar assert() y cuándo usar try catch?
Respuesta
Pruebe ... catch - for condiciones excepcionales, es decir, condiciones que no son causadas por código mal formado, pero que pueden alterar el flujo de control normal por eventos externos impredecibles.
aserciones para captura de código no válido, es decir, comprobar si un invariante se mantiene en la función, comprobar si un método interno es llamado con argumentos adecuados (por API pública es posible que aún desee una excepción para eso), etc.
Esas son mis pautas básicas, pero las convenciones varían de una situación a otra y de un idioma a otro.
Cuando usted está en duda, puede preguntarse: es que el registro de seguridad específico supone que todavía estará allí en el código de liberación, después de que probemos y terminar todo? Si responde "sí, sigue siendo necesario entonces", es probable que desee una excepción. De lo contrario, es probable que desee una afirmación.
Normalmente assert()
no funciona en el código de versión, por lo que nunca puede reemplazar una estrategia try-catch
. Sin embargo, me gusta usar assert()
en lugares donde se lanzan excepciones. Para mí (como desarrollador), a menudo es más conveniente recibir un mensaje de assert()
en la línea de falla que a través de la pila de excepción.
Se crean para diferentes propósitos. Assert
es más para encontrar errores, try-catch
es para el manejo de situaciones excepcionales.
Las situaciones de try-catch y assert son totalmente diferentes. Assert se usa para verificar si se espera el valor que ha recibido, como parámetro por ejemplo. No recomendaría usar assert en el código de producción, se usa principalmente en pruebas unitarias y rara vez para verificar los parámetros. Para comprobar los valores pasados mejor usar algo como:
public void test(int i) {
if (i < 0) {
throw new IllegalArgumentException("i cannot be less than 0");
}
...
}
bloque Try-catch se utiliza cuando se sabe algo dentro del bloque que puede salir mal. Por ejemplo, escribe en una tarjeta SD y no hay espacio para escribir. O sucedió que tratas de leer la matriz fuera de los límites. A continuación, poner su código crítico en el bloque try-catch y de verificación de los excpetions:
try {
InputStream is = new FileInputStream("filename.txt");
...
} catch FileNotFoundExcpetion {
System.out.println("file not found");
} finally {
...
}
More acerca de las excepciones y tratar de captura-bloques.
- 1. Cuándo usar y cuándo no usar Try Catch Finally
- 2. Cuándo usar bloques try/catch?
- 3. ¿Cuándo debería usar try/catch en JavaScript?
- 4. ¿Cuándo es un try catch no un try catch?
- 5. ¿Cuándo debería usar Apache Commons 'Validate.isTrue, y cuándo debo usar la palabra clave' assert '?
- 6. Cuándo usar undef_method, y cuándo usar remove_method?
- 7. Cuándo usar Pepino y cuándo usar RSpec?
- 8. cuándo usar Tarea y cuándo usar Subproceso?
- 9. Cuándo usar categorías y cuándo usar subclases?
- 10. ¿Cuándo usar == y cuándo usarlo?
- 11. Cuándo usar Ruby vs Cuándo usar PHP
- 12. ¿Cuándo debería usar TCP_NODELAY y cuándo TCP_CORK?
- 13. cuándo deberíamos usar instanceof y cuándo no
- 14. ¿Cuándo debería usar Silverlight y cuándo XNA?
- 15. Cuándo usar OSGi EventAdmin y cuándo no?
- 16. Cuándo usar .mdf y cuándo .sdf?
- 17. Cuándo usar Restringir y cuándo no a
- 18. Cuándo usar `zipmap` y cuándo` map vector`?
- 19. Cuándo usar GWT y cuándo no
- 20. Cuándo usar Class.isInstance() y cuándo usar el operador instanceof?
- 21. Cuándo usar componentes y cuándo usar extensiones en Yii?
- 22. Cuándo usar vectores y cuándo usar matrices en C++?
- 23. ¿Cuándo debería usar require() y cuándo usar define()?
- 24. Cuándo usar Requirejs y cuándo usar javascript incluido?
- 25. Cuándo deberíamos usar mutex y cuándo deberíamos usar el semáforo
- 26. Cuándo usar dup, y cuándo usar clon en Ruby?
- 27. Cuándo usar el sistema() y cuándo usar execv *()?
- 28. Cuándo usar un módulo y cuándo usar una clase
- 29. ¿Cuándo debe usar JCR y cuándo debe usar JPA/RDBMS?
- 30. Cuándo usar, no usar, OneToOne y ManyToOne
Esta es una diferencia clave, el código afirmativo se atribuye con el atributo condicional, por lo que se puede omitir en compilaciones de lanzamiento. –