Creación de excepciones personalizadas
Creación de excepciones personalizadas
En algunos escenarios de trabajo, puede suceder que la información proporcionada por alguno de los objetos Exception no se ajuste a lo que realmente necesitamos. Es por tanto, hora de crear una clase, que heredando de la clase base Exception, contenga la información a la medida en que la precisamos.
Supongamos, tal como vemos en el Código fuente 403, que escribimos la clase CtaCredito, para llevar el control de cuentas bancarias. En ella introduciremos el titular de la cuenta y un importe para el crédito que necesitemos asignar. No obstante, dicho crédito no podrá sobrepasar el valor de 2500; así que, para controlar tal circunstancia, creamos adicionalmente, la clase CreditoException, que heredando de Exception, contendrá información en uno de sus miembros, sobre la excepción producida en cuanto al importe que se intentó asignar a la cuenta.
' clase que contiene información sobre una cuenta bancaria Public Class CtaCredito
Private msTitular As String Private mdbDisponible As Double
Public Property Titular() As String Get Return msTitular End Get Set(ByVal Value As String)
msTitular = Value End Set End Property
Public ReadOnly Property Credito() As Double Get Return mdbDisponible End Get End Property
© Grupo EIDOS 26. Manipulación de errores
' en este método, si se intenta asignar un importe ' superior al permitido, se lanza una excepción, ' utilizando un objeto de la clase CreditoException, ' heredado de Exception Public Sub AsignarCredito(ByVal ldbCredito As Double)
If ldbCredito > 2500 Then Throw New CreditoException("Límite disponible: 2500 " & _ "- Se intentó asignar " & CType(ldbCredito, String)) Else mdbDisponible = ldbCredito End If End Sub End Class
' ------------------------------------------------- ' esta clase contiene la información sobre un error ' producido en un objeto CtaCredito Public Class CreditoException
Inherits Exception
Private msDescripcion As String
Public Sub New(ByVal lsDescripcion As String) msDescripcion = lsDescripcion End Sub
Public ReadOnly Property Descripcion() As String Get Return msDescripcion End Get End Property End Class
Código fuente 403
El esquema del proceso es el siguiente: cuando al método AsignarCredito( ), de un objeto CtaCredito, se intente asignar un valor no permitido, se genera un nuevo objeto CreditoException y se lanza a través de la palabra clave Throw, que es la encargada de emitir las excepciones en el entorno de ejecución.
Desde código cliente, el uso de estas clases sería el que muestra el Código fuente 404.
Module Module1 Public Sub Main() ' crear un objeto de la nueva clase Dim oCredito As New CtaCredito()
Try ' asignar valores a propiedades oCredito.Titular = "Jaime Peral" oCredito.AsignarCredito(1000) ' esto no produce error Console.WriteLine("El credito actual de {0} es {1:C}", _
oCredito.Titular, oCredito.Credito)
' esta instrucción sí produce error oCredito.AsignarCredito(5000)
Catch oExcep As CreditoException ' manipulador para las excepciones producidas ' sobre un objeto CtaCredito Console.WriteLine("Error al asignar crédito: {0}", oExcep.Descripcion)
Programación con Visual Basic .NET © Grupo EIDOS
Finally Console.WriteLine("El controlador de errores ha finalizado") End Try
Console.ReadLine() End Sub End Module
Código fuente 404
Parts
» Visual branding biro perjalanan alam (1)
» El manifiesto del ensamblado
» Instalación de Visual Studio .NET
» Grabando texto en un fichero
» Principales elementos en nuestro entorno de trabajo
» Manejo de ventanas adicionales del IDE
» Conceptos mínimos sobre depuración
» Comparación de cadenas en base a un patrón. El operador Like
» Uso de paréntesis para mejorar la legibilidad de expresiones
» Sintaxis de un procedimiento Function
» Sobrecarga de procedimientos
» Abordando un problema mediante programación procedural
» Creación de propiedades para la clase
» Encapsulación a través de propiedades
» Creación de métodos para la clase
» Sobrecarga de métodos o polimorfismo, en una misma clase
» Espacios de nombres (namespaces)
» Acceso a espacios de nombre de otros ensamblados
» Herencia y sobre-escritura de métodos
» Diferencias entre sobrecarga y sobre-escritura en base al tipo de enlace
» Ocultamiento de miembros de una clase
» Comportamiento de las palabras clave Me, MyClass y MyBase ante la sobre-escritura de métodos
» Herencia y métodos constructores
» Clases abstractas o no instanciables
» Comprobación del tipo de un objeto y moldeado (casting)
» Destrucción de objetos y recolección de basura
» Creación y manipulación de estructuras
» Estructuras o clases, ¿cuál debemos utilizar?
» Manipulación de cadenas con la clase String
» Optimizando la manipulación de cadenas con la clase StringBuilder
» Extender las funcionalidades de una clase a través de delegados
» La clase EventArgs, o cómo obtener información del objeto emisor del evento
» Obtención de subarrays a partir de un objeto ArrayList
» Manejo básico de colecciones Hashtable
» Operaciones varias con colecciones Hashtable
» Manipulación de valores en una colección Queue
» Implementando un interfaz para crear una nueva colección
» Manipulación estructurada de errores
» La influencia del orden de los manipuladores de excepciones
» Creación de excepciones personalizadas
» Manipulación de archivos mediante File y FileInfo
» Manipulación de archivos mediante Directory y DirectoryInfo
» Monitorización del sistema de archivos con FileSystemWatcher
» Creación de un formulario básico
» Iniciar el formulario desde Main( )
» Codificación de los eventos de controles
» Selección de texto en un TextBox
» Compartiendo código entre controles
» Crear una clase derivada de un control
» Agregar un proyecto con un formulario derivado
» Crear un formulario heredado desde un proyecto independiente
» Creación de menús desde código
» Detectando el estado de finalización
» Crear un proceso de monitorización
» Comportamiento Modal de formularios
» Formularios dependientes y fijos en primer plano
» Dibujo con las clases Graphics y Pen
» Manipulación de los eventos de pintado en la clase Form
» Manipulando el grado de opacidad del formulario
» Integrando elementos. Un visualizador de gráficos
» Comparativa de ADO /ADO .NET
» Arquitectura de datos desconectados
» Una visión general de ADO .NET
» Espacios de nombres y clases en ADO .NET
» Empleo de Data Binding simple para navegar y editar datos
» Configurar por código las propiedades del DataGrid
Show more