try catch


throw

The instruction throw allows throwing any kind of variable. The code shown below throws some text. The program will generate an error message (an exception) at run time because the program did not catch the text. Any instruction (or function) may throw a variable to notify that something went wrong. A program in execution may generate a fatal error for an exception that was not handled, in this case the program will unexpectedly close, and the user will not have the opportunity to be sure that his work has been saved. The try-catch block prevents a program from being unexpectedly closed by catching these exceptions and giving the option to notify the user of the error.
La instrucción throw permite aventar cualquier tipo de variable. El código mostrado debajo avienta un texto. El programa generará un mensaje de error (una excepción) en el momento de ejecución porque el programa no atrapó el texto. Cualquier instrucción (o función) puede aventar una variable para notificar que algo salió mal. Un programa en ejecución puede generar un error grave por una excepción que no se atrapó, en este caso el programa se cerrará inesperadamente y el usuario no tendrá oportunidad de asegurarse de que su trabajo se guardó. El bloque de try-catch permite que un programa nunca se cierre en forma inesperada atrapando estas excepciones y dando la opción de notificar al usuario del error.

Problem 1
Test the following code in the Library project.
Pruebe el siguiente código en el proyecto Library.

Program.cpp
void Library::Window_Open(Win::Event& e)
{
     throw L"Hello, please catch me";
}


Exception

An exception is a standard object that can be throw when something goes wrong in an program. Most programmers are familiar with the most common exception: Null pointer exception, Division by zero exception, etc.
Una excepción es un objeto estándar que puede ser lanzado cuando algo resulta mal en un programa. La mayoría de los programadores conocen las excepciones más comunes: Null pointer exception, Division by zero exception, etc.

A try-catch block

When a sequence of instructions may throw an exception using the throw keyword, it is convenient to surround these instructions in a try-catch block as illustrated below. C++, Java and C# support try-catch.
Cuando una secuencia de instrucciones puede aventar una excepción usando la palabra clave throw, es conveniente encerrar estas instrucciones en un bloque try-catch como se ilustra debajo. C++, Java y C# soportan try-catch.

Problem 2
Compute the output of the code shown below.
Calcule la salida del código mostrado debajo.

Space.cpp
...

void Space::Window_Open(Win::Event& e)
{
     try
     {
          double y= 50.0;
          double z = 0.0;
          if (z == 0) throw L"Cannot divide by zero";
          double x = y / z;
     }
     catch(wchar_t* info)
     {
          this->MessageBox(info, L"Library", MB_OK | MB_ICONERROR);
     }
}


...

To catch all exceptions, you may use ... as shown below.
Para atrapar todas las excepciones use ... como se muestra debajo.

Space.cpp
...

void Space::Window_Open(Win::Event& e)
{
     try
     {
          double y= 50.0;
          double z = 0.0;
          double x = y / z;
          // Some dangerous code



     }
     catch(...)
     {

     }
}


Tip
It is possible to throw any kind of values, for instance: int, double, bool, ComplexNumb, etc. as show below.
Es posible aventar cualquier tipo de valor, por ejemplo: int, double, bool, ComplexNumb, etc. como se muestra debajo.

Space.cpp
...

void Space::Window_Open(Win::Event& e)
{
     try
     {
          throw 5;
          throw 10.8;
     }
     catch(int n) // Here we catch the number 5
     {

     }
     catch(double x) // Here we catch the number 10.8
     {

     }
}


Tip
In java, we have the try-catch-finally block. The code in the finally block is always executed.
En java se tiene el bloque try-catch-finally. El código en el bloque de finally siempre se ejecuta.

Library.java
...

void Open()
{
     try
     {
          throw 5;
          throw 10.8;
     }
     catch(int n) // Here we catch the number 5
     {

     }
     catch(double x) // Here we catch the number 10.8
     {

     }
     finally
     {
          // It always gets executed
     }
}


© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home