Manejo de Excepciones Titular: Dario Guillermo Cardacci
Excepciones Son condiciones no esperadas durante la ejecución de la aplicación o por código ejecutándose dentro de esta. Los errores pueden ser tratados como excepciones..net Framework normaliza la forma de tratar las excepciones con independencia del lenguaje en que se esté trabajando.
Excepciones Las excepciones pueden ser capturadas por: El código existente dentro del mismo procedimiento donde se produce el error. Por el código donde se encuentra el llamador al código que actualmente se está ejecutando. (este proceso se repite burbujeando hacia arriba hasta que no existan más llamadores) En caso que no exista código para capturar la excepción esta es atrapada por el.net Framework en un cuadro de diálogo de error por defecto.
Excepciones
Errores sintácticos PROGRAMACIÓN ORIENTADA A OBJETOS Excepciones Tipos de Errores Los errores de sintaxis son aquéllos que aparecen mientras se escribe el código. Su código es comprobado cuando lo escribe en la ventana del Editor de código y le avisa si comete algún error, como escribir mal una palabra o utilizar un elemento del lenguaje incorrectamente. Los errores sintácticos son los errores más frecuentes. Se pueden corregir fácilmente en el entorno de codificación en cuanto se producen. La instrucción Option Explicit es una medida para evitar los errores de sintaxis. Le obliga a declarar, por anticipado, todas las variables que se vayan a utilizar en la aplicación.
Excepciones Tipos de Errores Errores en tiempo de ejecución Los errores en tiempo de ejecución son aquellos que aparecen solamente después de la compilación y la ejecución del código. Pueden darse errores de este tipo, por ejemplo, en fragmentos de código aparentemente correctos, por no presentar errores sintácticos, pero que no se ejecutan correctamente. Por ejemplo, podría escribir correctamente una línea de código que abre un archivo. Pero, si el archivo está dañado, la aplicación no podrá ejecutar la función Open y se detendrá su ejecución. La mayoría de los errores de este tipo pueden corregirse modificando el código que presenta errores, para después compilarlo y volver a ejecutarlo
Errores lógicos PROGRAMACIÓN ORIENTADA A OBJETOS Excepciones Tipos de Errores Los errores lógicos son aquellos que aparecen cuando la aplicación está en funcionamiento. Son a menudo resultados no deseados o inesperados en respuesta a acciones del usuario. Por ejemplo, una clave mal escrita u otra influencia externa podría hacer que la aplicación dejase de funcionar. Por lo general, los errores lógicos son los más difíciles de corregir, puesto que no siempre está claro dónde se originan.
Excepciones Objeto Exception Para facilitar el uso del control estructurado de excepciones, se ofrece la posibilidad de separar el código estándar del código de control de excepciones. El código de control de excepciones obtiene acceso a una instancia de la clase Exception, que permite recuperar información de cualquier excepción que se detecte.
Excepciones - Jerarquía
Excepciones - Jerarquía Jerarquía de herencia System.Object System.Exception System.SystemException System.OutOfMemoryException System.StackOverflowException System.DataMisalignedException System.ExecutionEngineException System.MemberAccessException System.AccessViolationException System.AppDomainUnloadedException System.ArgumentException System.ArithmeticException System.ArrayTypeMismatchException System.BadImageFormatException System.CannotUnloadAppDomainException System.TypeUnloadedException System.ContextMarshalException System.TypeLoadException System.FormatException System.IndexOutOfRangeException System.InvalidCastException
Excepciones - Jerarquía Jerarquía de herencia System.Object System.Exception System.SystemException System.InvalidOperationException System.InvalidProgramException System.MulticastNotSupportedException System.NotImplementedException System.NotSupportedException System.NullReferenceException System.OperationCanceledException System.RankException System.TimeoutException System.TypeInitializationException System.UnauthorizedAccessException System.UriTemplateMatchException System.Collections.Generic.KeyNotFoundException System.Runtime.Serialization.SerializationException System.Runtime.InteropServices.ExternalException System.Runtime.InteropServices.InvalidOleVariantTypeException System.Runtime.InteropServices.MarshalDirectiveException
Excepciones - Jerarquía Jerarquía de herencia System.Object System.Exception System.SystemException System.Runtime.InteropServices.InvalidComObjectException System.Runtime.InteropServices.SafeArrayRankMismatchException System.Runtime.InteropServices.SafeArrayTypeMismatchException System.Security.XmlSyntaxException System.Security.SecurityException System.Security.HostProtectionException System.Security.VerificationException System.Reflection.AmbiguousMatchException System.Reflection.ReflectionTypeLoadException System.Threading.AbandonedMutexException System.Threading.SynchronizationLockException System.Threading.ThreadAbortException System.Threading.ThreadInterruptedException System.Threading.ThreadStateException System.Threading.ThreadStartException System.Threading.SemaphoreFullException System.Runtime.Remoting.RemotingException
Excepciones - Jerarquía Jerarquía de herencia System.Object System.Exception System.SystemException System.Runtime.Remoting.ServerException System.Resources.MissingManifestResourceException System.Resources.MissingSatelliteAssemblyException System.Security.Policy.PolicyException System.Security.Principal.IdentityNotMappedException System.IO.IOException System.IO.InvalidDataException System.IO.InternalBufferOverflowException System.Security.Cryptography.CryptographicException System.Windows.Markup.XamlParseException System.Windows.Media.InvalidWmpVersionException System.Windows.Media.Animation.AnimationException System.Windows.Automation.ElementNotAvailableException System.ComponentModel.LicenseException System.ComponentModel.WarningException System.Printing.PrintSystemException System.Configuration.ConfigurationException System.Configuration.Install.InstallException
Excepciones - Jerarquía Jerarquía de herencia System.Object System.Exception System.SystemException System.Data.DataException System.Data.DBConcurrencyException System.Data.OperationAbortedException Microsoft.SqlServer.Server.InvalidUdtException System.Data.SqlClient.SqlException System.Data.SqlTypes.SqlTypeException System.Xml.XmlException System.Xml.Xsl.XsltException System.Deployment.Application.DeploymentException System.ComponentModel.Design.Serialization.CodeDomSerializerException System.DirectoryServices.AccountManagement.PrincipalException System.Security.Authentication.AuthenticationException System.Drawing.Printing.InvalidPrinterException System.EnterpriseServices.ServicedComponentException System.EnterpriseServices.RegistrationException System.IdentityModel.Tokens.SecurityTokenException System.Management.ManagementException System.ServiceModel.CommunicationException
Excepciones - Jerarquía Jerarquía de herencia System.Object System.Exception System.SystemException System.ServiceModel.QuotaExceededException System.ServiceModel.InvalidMessageContractException System.ServiceModel.Dispatcher.InvalidBodyAccessException System.ServiceModel.Dispatcher.MultipleFilterMatchesException System.ServiceProcess.TimeoutException System.Transactions.TransactionException System.Web.Caching.DatabaseNotEnabledForNotificationException System.Web.Caching.TableNotEnabledForNotificationException System.Web.Management.SqlExecutionException System.Web.Services.Protocols.SoapException System.Workflow.Activities.WorkflowAuthorizationException System.Workflow.Activities.EventDeliveryFailedException System.Workflow.Runtime.Hosting.PersistenceException System.Workflow.Runtime.Tracking.TrackingProfileDeserializationException System.Xml.Schema.XmlSchemaException System.Xml.XPath.XPathException
Excepciones Propiedades de Exception Propiedad HelpLink HResult InnerException Message Source StackTrace TargetSite Descripción Obtiene o establece un vínculo en el archivo de ayuda asociado a esta excepción. Obtiene o establece HRESULT, un valor numérico codificado asignado a una excepción específica. Obtiene la instancia que produjo la excepción actual. Obtiene un mensaje que describe la excepción actual. Obtiene o establece el nombre de la aplicación u objeto que produjo el error. Obtiene una representación de la cadena de los marcos en la pila de llamadas en el momento en el que se produjo la excepción actual. Obtiene el método que produjo la excepción actual.
Instrucción Try Catch - Finally Esta instrucción proporciona una manera de controlar algunos o todos los errores posibles que pueden ocurrir en un bloque de código determinado mientras se ejecuta el código. Try [ trystatements ] [ Exit Try ] [ Catch [ exception [ As type ] ] [ When expression ] [ catchstatements ] [ Exit Try ] ] [ Catch... ] [ Finally [ finallystatements ] ] End Try
Instrucción Try Catch - Finally Try. Comienzo de la instrucción. TryStatements Opcional. Instrucciones en las que puede ocurrir un error. Puede ser una instrucción compuesta. Catch Opcional. Se permite utilizar varios bloques Catch. Si se produce una excepción al procesar el bloque Try, cada instrucción Catch se examina en orden textual para determinar si controla la excepción; el parámetro exception representa la excepción que se ha producido. Exception Opcional. Cualquier nombre de variable. El valor inicial de exception es el valor del error producido. Se utiliza con Catch para especificar la captura del error. Si se omite, la instrucción Catch detecta cualquier excepción. Type Opcional. Especifica el tipo de filtro de clase. Si el valor de exception es del tipo especificado en type o de un tipo derivado, el identificador queda enlazado al objeto de excepción. When Opcional. Una instrucción Catch con una cláusula When sólo detecta las excepciones cuando expression se evalúa como True. Una cláusula When sólo se aplica después de comprobar el tipo de la excepción y expression puede hacer referencia al identificador que representa la excepción.
Instrucción Try Catch - Finally Expression Opcional. Debe ser convertible implícitamente a Boolean. Cualquier expresión que describe un filtro genérico. Se utiliza normalmente para filtrar por número de error. Se utiliza con la palabra clave When para especificar las circunstancias bajo las que se captura el error. CatchStatements Opcional. Instrucciones para controlar los errores que se producen en el bloque Try asociado. Puede ser una instrucción compuesta. Exit Try Opcional. Palabra clave que interrumpe la ejecución de la estructura Try...Catch...Finally. La ejecución se reanuda con el código que sigue inmediatamente a la instrucción End Try. Se ejecutará la instrucción Finally todavía. No se permite en bloques Finally. Finally Opcional. Siempre se ejecuta un bloque Finally cuando la ejecución sale de cualquier parte de la instrucción Try. FinallyStatements Opcional. Instrucciones que se ejecutan después de las demás operaciones de procesamiento de error. End Try Finaliza la estructura Try...Catch...Finally.
Instrucción Throw Produce una excepción dentro de un procedimiento. La instrucción Throw produce una excepción que puede controlar con código estructurado de control de excepciones (Try...Catch...Finally). Una instrucción Throw sin expresiones sólo se puede utilizar en una instrucción Catch, en este caso, la instrucción vuelve a producir la excepción que controla la instrucción Catch. La instrucción Throw restablece la pila de llamadas para la excepción expression. Si no se proporciona expression, la pila de llamadas queda sin modificar. Puede tener acceso a la pila de llamadas para la excepción a través de la propiedad StackTrace.
FIN