Diferencia entre revisiones de «Programación en C++/Excepciones»

Contenido eliminado Contenido añadido
El lobo (discusión | contribs.)
Página nueva: Editores:<br> [mailto:oscarpalacios1@yahoo.com.mx Oscar E. Palacios] == Control de excepciones == <div style="background:#fffeee; text-align:justify; padding:40px"> <p>Una excepció...
 
El lobo (discusión | contribs.)
Línea 5:
 
<div style="background:#fffeee; text-align:justify; padding:40px">
<p>Una excepción es un error que puede ocurrir debido a una mala entrada por parte del usuario, un mal funcionamiento en el hardware, un argumento inválido para un cálculo matemático, etc. En fin, el programador debe estar atento y escribir los algoritmos necesarios para evitar a toda costa que un error de excepción pueda hacer que el programa se interrumpa de manera inesperada. C++ soporta una forma más elegante para el manejo de excepciones que su contraparte el C estándar y esta consiste en el mecanismo <b>try</b>, <b>throw</b> y <b>catch</b>. La lógica del mecanismo mencionado consiste en:</p>
<li>#Dentro de un bloque <b>try</b> se pretende evaluar una o más expresiones y si dentro de dicho bloque se produce un error se lanza por medio de <b>throw</b> la excepción, misma que deberá ser capturada por un <b>catch</b> específico.<br><br>
#Puesto que desde un bloque <b>try</b> pueden ser lanzados diferentes tipos de errores de excepción es que puede haber más de un <b>catch</b> para capturar a cada uno de los mismos.<br><br>
se produce un error se lanza por medio de <b>throw</b> la excepción, misma que deberá ser capturada por
#Si desde un <b>try</b> se lanza una excepción y no existe el mecanismo <b>catch</b> para tratar dicha excepción el programa se interumpirá abruptamente despues de haber pasado por todos los catchs que se hayan definido y de no haber encontrado el adecuado.<br><br>
un <b>catch</b> específico.</li><p class="parrafo">Puesto que desde un bloque <b>try</b> pueden ser lanzados diferentes
#Los tipo de errorres lazados pueden ser de un tipo primitivo tal como: <b>int</b>, <b>float</b>, <b>char</b>, etc. aunque normalmente las exepciones son lanzadas por alguna clase escrita por el usuario o por una clase de las que vienen incluidas con el compilador.<br><br>
tipos de errores de excepción es que puede haber más de un <b>catch</b> para capturar a cada uno de los mismos.
En el programa que se listará en seguida se muestra un ejemplo de como lanzar una excepción de tipo <b>int</b> dentro del bloque <b>try</b>, y como capturar el error por medio de <b>catch</b>.
Si desde un <b>try</b> se lanza una excepción y no existe el mecanismo <b>catch</b> para tratar dicha
<source lang=cpp>
excepción el programa se interumpirá abruptamente despues de haber pasado por todos los catchs que se hayan
<div class="code">// Demostración: try, throw y catch
definido y uno haber encontrado el adecuado. Los tipo de errorres lazados pueden ser de un tipo primitivo
#include <iostream>
tal como: <b>int</b>, <b>float</b>, <b>char</b>, etc. aunque normalmente las exepciones son lanzadas por
 
por alguna clase escrita por el usuario o por una clase de las que vienen incluidas con el compilador. En el
using namespace std;
programa que se listará en seguida se muestra un ejemplo de como lanzar una excepción de tipo <b>int</b> dentro
 
del bloque <b>try</b>, y como capturar el error por medio de <b>catch</b>.</p>
<div class="code">// Demostración: try, throw y catch
<pre>
#include &lt;iostream&gt;<br>using namespace std;<br>
int main()
{
try {
throw 125;
}
}
catch(int) {
cout << "Error tipo entero capturado" << endl;
}
}
 
cin.get();
return 0;
}</pre></div><p></p>
}</source>
<p class="parrafo">Como ya hemos mencionado, los herrores pueden deberse a una multitud de situaciones
 
muchas veces inesperadas, por tal motivo, en C++ existe una forma de manejar excepciones desconocidas
Como ya hemos mencionado, los herrores pueden deberse a una multitud de situaciones muchas veces inesperadas, por tal motivo, en C++ existe una forma de manejar excepciones desconocidas y es buena idea que si usted esta escribiendo un controlador de errores incluya un <b>catch</b> para capturar errores inesperados. Por ejemplo, en el siguiente progama se escribe un <b>catch</b> que tratará de capturar cualquier error inesperado. Observe que la sintaxis para declarar un catch general es:<br>
<pre>catch(...) { bloque de imstrucciones }</pre>
capturar errores inesperados. Por ejemplo, en el siguiente progama se escribe un <b>catch</b> que tratará
<source lang=cpp>
de capturar cualquier error inesperado. Observe que la sintaxis para declarar un catch general es: <b>catch(...) { bloque de imstrucciones }</b></p>
<div class="code">// Demostración: try, throw y catch
#include <iostream>
<pre>
 
#include &lt;iostream&gt;<br>using namespace std;<br>
using namespace std;
 
int main()
{
try {
throw 125;
}
}
catch(...) {
cout << "Ha ocurrido un error inesperado..." << endl;
}
}
cin.get();
return 0;
}</source>
}</pre></div><p></p>
 
<p class="parrafo">Si usted está usando una clase escrita por terceras personas o de las que se
incluyen con el compilador y desea utilizar el mecanismo <b>try</b>, deberá conocer el tipo de