Вы находитесь на странице: 1из 13

REPUBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA DEFENSA UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICADE LA FUERZA ARMADA

NACIONAL BOLIVARIANA Estado Falcn - Ncleo Coro

Realizado por: Diego Medina ISN6-A SANTA ANA DE CORO, ABRIL DEL 2013

NDICE
Pg. EXCEPCIONES Y CONTROL DE EXCEPCIONES. . . . . . . . . . . . . . . . . . . . . . PROPIEDADES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CONTROL DE EXCEPCIONES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BLOQUES CATCH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BLOQUES FINALLY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CREAR Y PRODUCIR EXCEPCIONES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EXCEPCIONES GENERADAS POR EL COMPILADOR. . . . . . . . . . . . . . . . . CONTROLAR UNA EXCEPCIN MEDIANTE TRY Y CATCH. . . . . . . . . . . EJECUTAR CDIGO DE LIMPIEZA MEDIANTE EL FINALLY. . . . . . . . . . . 3 3 4 5 6 6 7 9 10

REFERENCIAS ELECTRNICAS

EXCEPCIONES Y CONTROL DE EXCEPCIONES


Las excepciones son errores durante la ejecucin. Si uno de esos errores se produce y no implementamos el manejo de excepciones, el programa sencillamente terminar abruptamente. Es muy probable que si hay ficheros abiertos no se guarde el contenido de los buffers, ni se cierren, adems ciertos objetos no sern destruidos, y se producirn fugas de memoria. Las excepciones ms habituales son las de peticiones de memoria fallidas. El control de excepciones utiliza tres palabras calves; try, catch y finally para intentar acciones que podran no realizarse correctamente, controlar errores y limpiar los recursos despus. Common Language Runtime (CLR), las bibliotecas de otro fabricante o el cdigo de aplicacin que utiliza la palabra clave throw pueden generar excepciones.

PROPIEDADES

Cuando la aplicacin encuentra una circunstancia excepcional, como una divisin por cero o una advertencia de que no hay suficiente memoria, se genera una excepcin.

Utilice un bloque try alrededor de las instrucciones que puedan generar excepciones. Cuando se produce una excepcin dentro del bloque try, el flujo de control salta inmediatamente a un controlador de excepciones asociado, si existe alguno.

Si no hay un controlador de excepciones para una excepcin determinada, el programa deja de ejecutarse y presenta un mensaje de error.

Si un bloque catch define una variable de excepcin, puede utilizar dicho bloque para obtener ms informacin sobre el tipo de excepcin que se ha producido.

Las acciones que pueden producir una excepcin se ejecutan con la palabra clave try. Un controlador de excepciones es un bloque de cdigo que se ejecuta cuando se produce una excepcin. En C#, la palabra clave catch se utiliza para definir un controlador de excepciones.

Un programa que utiliza la palabra clave throw puede generar explcitamente excepciones. Los objetos de excepcin contienen informacin detallada sobre el error que incluye el estado de la pila de llamadas y una descripcin de texto del error. El cdigo se ejecuta en un bloque finally aunque se produzca una excepcin, permitiendo as que el programa libere recursos.

CONTROL DE EXCEPCIONES
Los programadores de C++ utilizan bloques try para separar el cdigo al que puede afectar una excepcin y bloques catch para controlar las excepciones resultantes. Se puede utilizar un bloque finally para ejecutar el cdigo independientemente de que se inicie una excepcin, lo cual es necesario a veces porque el cdigo que sigue a una construccin try/catch podra no ejecutarse si se produce una excepcin. Un bloque try se debe utilizar con un bloque catch o finally, y puede incluir varios bloques catch.

Ejemplo: try { // Cdigo de try (aqu). } catch (System.Exception ex) { // Cdigo para manejar excepcin (aqu). } finally { // Cdigo que se ejecuta despus del try (y posible catch) (aqu). }

BLOQUES CATCH

Un bloque catch puede especificar un tipo de excepcin que se detectar. Este tipo se denomina filtro de excepcin y debe ser el tipo Exception o uno derivado de ste. Las excepciones definidas por la aplicacin deberan derivarse de ApplicationException.

Es importante colocar los bloques catch con las clases de excepcin ms concretas (ms derivadas), en primer lugar. Debe detectar excepciones cuando se tenga un conocimiento especfico del motivo por el que se produjo la excepcin y pueda implementar una recuperacin concreta, por ejemplo, detectar una excepcin

FileNotFoundException y solicitar al usuario que escriba un nuevo nombre de archivo.

BLOQUES FINALLY

Un bloque finally permite la limpieza de acciones realizada en un bloque try. Si el bloque finally est presente, se ejecuta despus de los bloques try y catch. Un bloque finally se ejecuta siempre, sin tener en cuenta si se produce una excepcin o si se encuentra un bloque catch que coincida con el tipo de excepcin.

CREAR Y PRODUCIR EXCEPCIONES


Las excepciones se utilizan para indicar que se ha producido un error mientras el programa est en ejecucin. Los objetos de excepcin que describen un error se crean y, a continuacin, se producen con la palabra clave throw. El motor de ejecucin busca el controlador de excepciones ms compatible.

Los programadores deberan producir excepciones cuando se presentan estas posibles situaciones:

El mtodo no puede finalizar su funcionalidad definida. Por ejemplo, si el parmetro de un mtodo tiene un valor no vlido. Se realiza una llamada inadecuada a un objeto, basada en el estado del objeto. Por ejemplo, al tratar de escribir en un archivo de slo lectura. En los casos en que el estado del objeto no permite realizar una operacin.

Cuando un argumento para un mtodo provoca una excepcin. En este caso, se debera detectar una excepcin original y se debera crear una instancia de ArgumentException.

Las excepciones contienen una propiedad denominada StackTrace. Esta cadena contiene el nombre de los mtodos en la pila actual de llamadas, junto con el nombre del archivo y nmero de lnea donde se produjo la excepcin para cada mtodo. CRL crea automticamente un objeto StackTrace desde el punto de la instruccin throw, de modo que las excepciones se deben producir desde el punto donde debe comenzar el seguimiento de la pila.

Todas las excepciones contienen una propiedad denominada Message. Esta cadena se debera establecer para explicar la razn de la excepcin. Tenga en cuenta que no se debe colocar informacin confidencial de seguridad en el texto del mensaje. Adems de Message, ArgumentException contiene una propiedad llamada ParamName que se debe establecer en el nombre del argumento que provoc que se produjera la excepcin. En el caso de un establecedor de propiedades, ParamName se debera establecer en value.

EXCEPCIONES GENERADAS POR EL COMPILADOR


El Common Language Runtime (CLR) de .NET Framework produce automticamente algunas excepciones como resultado de operaciones bsicas en las que se produce un error.

Excepcin

Descripcin Clase base de las excepciones producidas durante

ArithmeticException

operaciones

aritmticas,

como

DivideByZeroException y OverflowException. Se produce cuando una matriz no puede ArrayTypeMismatchException almacenar un elemento dado porque el tipo real del elemento es incompatible con el tipo real de la matriz. DivideByZeroException Se produce cuando tiene lugar un intento de dividir un valor integral por cero. Se produce cuando tiene lugar un intento de IndexOutOfRangeException indizar una matriz cuando el ndice es menor que cero o se encuentra fuera de los lmites de la matriz. Se produce cuando tiene lugar un error en tiempo InvalidCastException de ejecucin en una conversin explcita de un tipo base a una interfaz o a un tipo derivado. NullReferenceException Se produce al intentar hacer referencia a un objeto cuyo valor es null. Se produce cuando el intento de asignar memoria OutOfMemoryException mediante el operador new da un error. Esto indica que la memoria disponible en Common Language Runtime se ha agotado. OverflowException Se produce cuando una operacin aritmtica en un contexto checked produce un desbordamiento. Se produce cuando se agota la pila de StackOverflowException excepciones debido a la existencia de demasiadas llamadas al mtodo pendiente; normalmente,

suele indicar un nivel de recursividad muy profundo o infinito. Se produce cuando un constructor esttico TypeInitializationException produce una excepcin sin que haya clusulas catch compatibles para capturarla.

CONTROLAR UNA EXCEPCIN MEDIANTE TRY Y CATCH


El propsito de un bloque try-catch es detectar y controlar una excepcin generada por cdigo en funcionamiento. Algunas excepciones se pueden controlar en un bloque catch y el problema se puede resolver sin que se vuelva a generar la excepcin; sin embargo, con ms frecuencia lo nico que puede hacer es asegurarse de que se produzca la excepcin adecuada.

Ejemplo:

En este ejemplo, IndexOutOfRangeException no es la excepcin ms adecuada: ArgumentOutOfRangeException tiene ms sentido para el mtodo porque el argumento de index pasado por el llamador produce el error. class TestTryCatch { static int GetInt(int[] array, int index) { try {

return array[index]; } catch (System.IndexOutOfRangeException e) CS0168 { System.Console.WriteLine(e.Message); /*Establece IndexOutOfRangeException a la nueva excepcion InnerException*/ throw new System.ArgumentOutOfRangeException("El Parmetro ndice Est Fuera de Rango.", e); } } } //

EJECUTAR FINALLY

CDIGO

DE

LIMPIEZA

MEDIANTE

EL

El propsito de una instruccin finally es asegurarse de que la limpieza necesaria de objetos, por lo general objetos que contienen recursos externos, se produzca inmediatamente, incluso cuando se produce una excepcin. Por ejemplo de esta limpieza es llamar a Close en FileStream inmediatamente despus de su uso en lugar de esperar que el objeto sea recolectado como elemento no utilizado por Common Language Runtime, de la siguiente manera: static void CodeWithoutCleanup()

10

{ System.IO.FileStream file = null; System.IO.FileInfo fileInfo = new System.IO.FileInfo("C:\\file.txt"); file = fileInfo.OpenWrite(); file.WriteByte(0xF); file.Close(); }

Para convertir este cdigo en una instruccin try, catch y finally, el cdigo de limpieza esta separado del cdigo activo como se muestra a continuacin: static void CodeWithCleanup() { System.IO.FileStream file = null; System.IO.FileInfo fileInfo = null; try { fileInfo = new System.IO.FileInfo("C:\\file.txt"); file = fileInfo.OpenWrite(); file.WriteByte(0xF); } catch(System.Exception e) {

11

System.Console.WriteLine(e.Message); } finally { if (file != null) { file.Close(); } } }

Como puede producirse una excepcin en cualquier momento dentro del bloque try antes de la llamada a OpenWrite() o la propia llamada a OpenWrite() podra producir un error, no se garantiza que el archivo est abierto cuando se intenta cerrarlo. El bloque finally agrega una comprobacin para asegurarse de que el objeto FileStream no es null antes de llamar al mtodo Close. Sin la comprobacin de null, el bloque finally podra iniciar su propia excepcin NullReferenceException, pero se debera evitar producir excepciones en bloques finally si es posible.

12

REFERENCIAS ELECTRNICAS
Microsoft Corporation. 2013. Excepciones y Control de Excepciones. http://msdn.microsoft.com/es-es/library/ms173160(v=vs.80).aspx (6 Abr 2013).

13

Вам также может понравиться