Buenos días Marcelo Moreno!
Quizá pueda servirte el manejo de errores...
Al iniciar tu sistema:
On Error Do hayerror With ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM(), LINENO( )
y en "hayerror.prg" algo como esto:
Parameter merror, mess, mess1, mprog, mlineno
Do CAse
CASE mError=??
*aquí pones la acción a realiza o "Retry" o "Return To Master" según sea el caso
CASE mError=??
*aquí pones la acción a realiza o "Retry" o "Return To Master" según sea el caso
OtherWise
MESSAGEBOX('Número de error: ' + LTRIM(STR(merror))+CHR(13)+;
'Mensaje del error: ' + mess+CHR(13)+;
'Línea que causo el error: ' + mess1+CHR(13)+;
'Número de línea del error: ' + LTRIM(STR(mlineno))+CHR(13)+;
'Programa en el que se originó el error: '+ mprog,48,"Error del programa")
EndCase
Debes determinar bien el número de error y las causas para aplicar la acción correcta.
Hablamos de errores por factores/situaciones externas.
Con un mail incorrecto el mensaje debe salir aunque después sea rechazado.
Una cadena mal formada de correo puede validarse antes de enviar el correo y no sería objeto del manejo de errores sino de un código que lo "salte" y el proceso continúe.
Suerte
Zarlu
Chetumal, Quintana Roo, México