Excepciones

Contactar con el profesor

Excepción con un catch

int i = 2;
int j = 0;
Console.WriteLine("before");
try{
        Console.WriteLine("in the try");
	Console.WriteLine(i / j);
}catch (ArithmeticException e){
	Console.WriteLine("in catch");
	e.ToString();
}
Console.WriteLine("after");

Output:
antes
en el try
en el catch
java.lang.ArithmeticException
despues

Excepción con varios catch

int i = 2;
int j = 0;
Console.WriteLine("before");
try{
	Console.WriteLine("in the try");
	Console.WriteLine(i / j);
}catch (ArithmeticException e){
	Console.WriteLine("in catch2");
	e.ToString();
}catch (Exception e){
	Console.WriteLine("in catch3");
	e.ToString();
}
      
Console.WriteLine("after");

Output
antes
en el try
en catch2
java.lang.ArithmeticException
despues

El único catch que se aplica es el que recoge la excepción. Después de este, el programa continua ejecutándose a partir del último Catch.

Para que el código compile, los tipos de Error más generales(Throwable) deben estar por debajo de los más particulares(ArithmeticException)

Throw

class ExceptionWithThrow{
	static void Main(string[] args){
		ExceptionWithThrow exceptionWithThrow = new ExceptionWithThrow();
		try{
			exceptionWithThrow.ThrowExcepcion();
		}catch (Exception e){
			Console.WriteLine("exception throwed and processed");
		}
		exceptionWithThrow.processException();
	}

	public void ThrowExcepcion() {
		throw new Exception();
	}

	public void processException(){
		try{
			throw new Exception();
		}catch (Exception e){
			Console.WriteLine("exception processes");
		}
	}
}

Consola:
excepción lanzada y procesada
excepción procesada

Finally

El finally se ejecuta siempre, se trate la excepción o no se trate la excepción. La única forma de evitar que se ejecute el finally es ejecutando un System.exit(), que mata la máquina virtual.

Se utiliza siempre en conjunción con un try-catch. No puede haber nada después del catch y antes del finally.

static void Main(string[] args){
	int i = 2;
	int j = 0;
	Console.WriteLine("before");
	try{
		Console.WriteLine(i / j);
	}catch (ArithmeticException e){
		Console.WriteLine("in catch2");
		e.ToString();
	}catch (Exception e){
		Console.WriteLine("in catch3");
	}finally{
		Console.WriteLine("in finally");
	}
	Console.WriteLine("after");
}

Output:
antes
en catch2
java.lang.ArithmeticException
en finally
despues

Ejercicio excepciones

Implementar una clase Main que llame al método getPrecioConIva() de la clase Servicios e imprima el valor que devuelve.

Implementar una clase Servicios con un método llamado getPrecioConIva() que recibirá un número y devolverá dicho número multiplicado por 1.16. Si el precio es mayor que 100 arrojará una PrecioDemasiadoAltoException que será capturada en el Main.

Implementar una clase PrecioDemasiadoAltoException y sobreescribir su método printStackTrace() para que imprima el texto “El precio es demasiado alto”.

← Ejercicio – juego de la oca en c#
Delegados →

Aviso Legal | Política de privacidad