Ejercicios
(Excepciones y falla de los constructores)Hasta este capítulo, hemos visto que tratar con
los errores detectados por los constructores es algo difícil. Explique por qué el manejo de
excepciones es un medio efectivo para tratar con las fallas en los constructores.
Las excepciones son métodos efectivos para detectar fallos que probablemente ocurran en
los programas que se van a ejecutar, las fallas en los constructores se pueden predecir con
estos llamados métodos. Si se asumen los posibles errores que tenga el programa antes de
crear un objeto el constructor imposibilitara la acción de crear el nuevo objeto. Por ende la
excepción funciona como una especie de barrera para que el programa deje de ejecutarse
abruptamente en este caso.
(Orden de los bloques catch) Escriba un programa que demuestre que el orden de los
bloques catch es importante. Si trata de atrapar un tipo de excepción de superclase antes de
un tipo de subclase, el compilador debe generar errores.
import [Link];
public class PruebaTry {
public static void main(String[] args){
try {
Subclase ensayo = new Subclase (0,0,10,0);
[Link]();
[Link]();
[Link]();
}catch(InputMismatchException inputMismatchException){
[Link]("%nExcepcion: %s%n", inputMismatchException);
[Link]("Debe introducir enteros. %n%n");
}catch(ArithmeticException arithmeticException){
[Link]("%nExcepcion: %s%n", arithmeticException);
[Link]("Cero es un denominador invalido. %n%n");
}
}
}
import [Link];
public class Superclase {
Scanner entrada = new Scanner ([Link]);
int nombre;
int apellido;
public Superclase(int nombre,int apellido){
[Link] = nombre;
[Link] = apellido;
}
public void establecernombre(){
[Link] = [Link]();
}
public void establecerapellido(){
[Link] = [Link]();
}
}
public class Subclase extends Superclase{
int ingresos;
int personas;
public Subclase(int nombre,int apellido,int ingresos,int personas){
super(nombre,apellido);
[Link] = ingresos ;
[Link] = personas;
}
public int obteneringresosporpersona()
throws ArithmeticException{
return ingresos/personas;
}
}
(Atrapar excepciones mediante el uso de alcances exteriores) Escriba un programa que
muestre que un método con su propio bloque try no tiene que atrapar todos los posibles
errores que se generen dentro del try. Algunas excepciones pueden pasarse hacia otros
alcances, en donde se manejan.
import [Link];
import [Link];
public class PruebaTry {
public static void main(String[] args){
Scanner entrada = new Scanner ([Link]);
try {
Subclase ensayo = new Subclase (0,0,10,10);
[Link]();
[Link]();
[Link]();
int [] encuesta = new int[5];
for (int cuenta = 0 ; cuenta<=[Link] ; cuenta++){
encuesta[cuenta] = [Link]();
}
}catch(InputMismatchException inputMismatchException){
[Link]("%nExcepcion: %s%n", inputMismatchException);
[Link]("Debe introducir enteros. \n\n");
}catch(ArithmeticException arithmeticException){
[Link]("%nExcepcion: %s%n", arithmeticException);
[Link]("Cero es un denominador invalido. %n%n");
}
}
}