Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Lanzar error desde sub en una clase

Estas en el tema de Lanzar error desde sub en una clase en el foro de Visual Basic clásico en Foros del Web. Saludos estimados maestros de la programacion, esta vez le escribo por que resulta que ahora estoy dandole a Visual basic 6.0 y estoy realizando unas ...
  #1 (permalink)  
Antiguo 17/07/2006, 12:33
Avatar de onlykfk  
Fecha de Ingreso: agosto-2005
Ubicación: 20°45' Latitud Norte 100°
Mensajes: 121
Antigüedad: 18 años, 8 meses
Puntos: 1
Lanzar error desde sub en una clase

Saludos estimados maestros de la programacion, esta vez le escribo por que resulta que ahora estoy dandole a Visual basic 6.0 y estoy realizando unas clases con metodos, pero, resulta que kiero ke un metodo si detecta un error interno, lo lance a kien manda ejecutar el procedimiento y dentro del mismo.
En java he realizado algo asi como esto:

Código:
 
class miclase {
 public void mimetodo(p1,p2) throws IOException {
  try {
    ...
  } catch(IOException io) {
    ...
  } finally {
    ...
  }
 }
} 
en Visual Basic pretendo lo siguiente:

Mi Clase:
Código:
 
Public Function getDate(dia, mes, anho) as String
 Dim dt as Date
 On Error GoTo ErrDate
'La siguiente linea me podria generar un error en una fecha no valida como "29/02/2006"
 dt = CDate(dia & "/" & mes & "/" & anho) 
 getDate = dt
 Exit Function
ErrDate:
 'Aki es donde kiero lanzar el error a kien hizo la llamada y manejarlo fuera, sin embargo no se como hacerlo
 Exit Function
End Function 
La llamada
Código:
Dim obj as new MiClase
On Error ResumeNext
X = obj.getDate(25,10,1982)
If Err <> 0 Then MsgBox Err.Description 'Que seria mi propio objeto error.
End 
¿Alguien podria ayudarme con este topico por favor?


Saludos
__________________
Yo tan sólo se, que no he senado
  #2 (permalink)  
Antiguo 17/07/2006, 15:55
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
Err.raise lanza un error personalizado. En la ayuda hay informacion y ahora no estoy con VB

Un saludo
__________________
Marcos

El dinero no da la felicidad... démelo y sea feliz!!!
  #3 (permalink)  
Antiguo 17/07/2006, 18:06
Avatar de [EX3]  
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 18 años, 1 mes
Puntos: 1
Tal y como te dijeron, en VB 6.0 seria mediante el metodo Raise del objeto Err:
Código:
 
Public Function getDate(dia, mes, anho) as String
Dim dt as Date On Error GoTo ErrDate 'La siguiente linea me podria generar un error en una fecha no valida como "29/02/2006" dt = CDate(dia & "/" & mes & "/" & anho) getDate = dt Exit Function
ErrDate:
Call Err.Raise(vbObjectError + 1000, , "Fecha no valida")
End Function
Salu2...
__________________
Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX

Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra.

  #4 (permalink)  
Antiguo 18/07/2006, 08:23
Avatar de onlykfk  
Fecha de Ingreso: agosto-2005
Ubicación: 20°45' Latitud Norte 100°
Mensajes: 121
Antigüedad: 18 años, 8 meses
Puntos: 1
Gracias. Ya lo probe y funciono muy bien. Disculpen pero es que la mayoria de veces he manejado VB pero mas orientado a ASP es decir VBScripting y el manejo de errores solo lo conocia en forma lineal, es decir el famosisimo "On Error Resume Next" :) y ahora ke estoy desarrollando una aplicacion de escritorio pues me vi en la necesidad de recurrir a los maestros.

Ahora la duda es con respecto a los Enumerators en una clase de VB60, en si ¿Alguien podria darme una definicion mas clara de que son y como funcionan?

SALUDOS.
__________________
Yo tan sólo se, que no he senado
  #5 (permalink)  
Antiguo 18/07/2006, 10:10
 
Fecha de Ingreso: abril-2004
Mensajes: 192
Antigüedad: 20 años
Puntos: 0
Hola te paso un ejemplo:

en un modulo de clase llamado Class1

Código:
Option Explicit
'Definis el Enum
Enum e_MiTipo

[Con borde] = 0
[Sin borde] = 1

End Enum

'Variable local
Private m_estilo As Long

'Lee la propiedad
Public Property Get Estilo() As e_MiTipo
Estilo = m_estilo
End Property

'Escribe la propiedad
Public Property Let Estilo(ByVal vNewValue As e_MiTipo)
m_estilo = vNewValue
End Property


en un form:

Código:
Option Explicit
Private Sub Form_Load()
Dim c As Class1

Set c = New Class1

'Le asignamos un valor de la lista del enum a Estilo
c.Estilo = [Con borde]

'Muestra el valor de la propiedad
MsgBox c.Estilo

Set c = Nothing

End Sub

Fijate que las propiedades son de tipo e_Mitipo, es decir el enum


saludos
__________________
Recursos visual basic
  #6 (permalink)  
Antiguo 19/07/2006, 12:38
Avatar de onlykfk  
Fecha de Ingreso: agosto-2005
Ubicación: 20°45' Latitud Norte 100°
Mensajes: 121
Antigüedad: 18 años, 8 meses
Puntos: 1
De acuerdo

Gracias. Yo lo habia probado en algo parecido con la diferencia de...

Código:
Option Explicit
'Definis el Enum Enum e_MiTipo [Con borde] = 0 [Sin borde] = 1 End Enum 'Variable local Private m_estilo As e_MiTipo 'Lee la propiedad Public Property Get Estilo() As e_MiTipo Estilo = m_estilo End Property 'Escribe la propiedad Public Property Let Estilo(ByVal vNewValue As e_MiTipo) m_estilo = vNewValue End Property
Ahora ya todo esta mas claro.

Muchas Gracias.

Saludos
__________________
Yo tan sólo se, que no he senado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:13.