Foros del Web » Programando para Internet » ASP Clásico »

error cuando intento borrar un archivo que no existe ;)

Estas en el tema de error cuando intento borrar un archivo que no existe ;) en el foro de ASP Clásico en Foros del Web. Set objFSO = Server.CreateObject("Scripting.FileSystemObject") foto="D:\ssss\miweb.com\Html\fotos\" foto=foto&ref&".jpg" objFSO.DeleteFile foto pues eso con este codigo intento borrar un archivo, pero cuando ese archivo no esta en el ...
  #1 (permalink)  
Antiguo 11/05/2005, 09:24
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 7 meses
Puntos: 6
error cuando intento borrar un archivo que no existe ;)

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
foto="D:\ssss\miweb.com\Html\fotos\"
foto=foto&ref&".jpg"
objFSO.DeleteFile foto

pues eso con este codigo intento borrar un archivo, pero cuando ese archivo no esta en el server me lanza un error,

¿como puedo hacer para que si el archivo no esta en el server, no pase nada y siga ejecutando el resto del codigo?

gracias.
  #2 (permalink)  
Antiguo 11/05/2005, 09:38
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
foto="D:\ssss\miweb.com\Html\fotos\"
foto=foto&ref&".jpg"
on error resume next
objFSO.DeleteFile foto
  #3 (permalink)  
Antiguo 11/05/2005, 10:13
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Un poco más pro ;)


Código:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
foto="D:\ssss\miweb.com\Html\fotos\"
foto=foto&ref&".jpg"
If objFSO.FileExists(foto) Then
objFSO.DeleteFile foto
Else
Response.Write("El archivo " & foto & " no existe.")
End if
__________________
...___...
  #4 (permalink)  
Antiguo 11/05/2005, 10:23
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 7 meses
Puntos: 6
gracias a los dos, para lo que necesito me sobra con on error resume next

saludos.
  #5 (permalink)  
Antiguo 11/05/2005, 10:53
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
leru leru leru





(habia borrado este mensaje cuando queria borrar otro..jejejej)
  #6 (permalink)  
Antiguo 11/05/2005, 10:59
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Cita:
Iniciado por suntus
gracias a los dos, para lo que necesito me sobra con on error resume next

saludos.
Este comentario, me trae a la menta algo que siempre he pensado, es cierto que los lenguajes de programación, te dan la posibilidad del manejo de errores, cosa que es genial, pero es correcto(desde un punto de vista de optimización), solucionar problemas vanos como este con un error handler? siendo que se pueden evitar? ustedes que opinan?

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 11/05/2005, 11:27
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Yo opino que... ¿para qué usar un error handler al ocurrir un error si directamnete éste se puede evitar?


Cita:
leru leru leru
Jjajajaja
__________________
...___...
  #8 (permalink)  
Antiguo 11/05/2005, 11:40
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

En realidad la mejor estructura es aquella que usa ambos metodos, es decir:

Muzztein

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
foto="D:\ssss\miweb.com\Html\fotos\"
foto=foto&ref&".jpg"
on error resume next '''''''' Esto es totalmente necesario para evitar errores en pantalla, etc...

'''' Pero justo aqui...

AZ

If objFSO.FileExists(foto) Then
objFSO.DeleteFile foto

'''' Aqui, Neuron_376

if Err.Number > 0 then
Response.write "Hubo un error al intentar accesar al archivo que deseas borrar"


end if

Else

Response.Write("El archivo " & foto & " no existe.")

End if



-------------------------

La razon es facil, el on error evita que el usuario vea cualquier error posible, porque aun con lo que menciona AZ puede existir error cuando un archivo esta marcado como READONLY, entonces habra error aun cuando el archivo si existe.

Pero si lo dejas solo con on error y lo dejas correr vas a provocar un error de compilacion y el codigo no parara en ningun punto, y tendras accesos al disco duro totalmente innecesarios, entonces con unas pocas lienas de codigo haces que todo sea mas eficiente, y teniendo en cuenta todos los posibles casos logras que tu script no tenga ningun bug posible y siga siendo lo mas eficiente posible.

Esa es mi opinión...

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #9 (permalink)  
Antiguo 11/05/2005, 11:47
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
¡¡¡TOOOMEENLA!!!!, ¿les quedó alguna duda?, jejeje, y eso que Neuron ni hizo " leru leru leru"
  #10 (permalink)  
Antiguo 11/05/2005, 11:49
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
leru, leru, leru
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #11 (permalink)  
Antiguo 11/05/2005, 12:07
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
jejejeje

Solo trato de colaborar :-p

jajajaja

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #12 (permalink)  
Antiguo 11/05/2005, 12:32
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Se me hace que eso fue por el letrero de Myakire je je je, ya ves master Tigurón? te dije que refutaras el nombramiento...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #13 (permalink)  
Antiguo 11/05/2005, 13:21
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Totalmente de acuerdo con Neurón!

Aunque...

Cita:
object.DeleteFile file [, force]

This method is used to delete a specified file or files (using wildcards). The optional force parameter returns a Boolean value - True allows files with read-only attributes to be deleted, while False (default) does not. Trying to delete a read-only file without setting force to True will return an error.
Lo que no sé que ocurre es si justo el archivo a eliminar está en uso (no sé por qué lo estaría, pero podría ¿no?)

Entonces, propongo ésto:

Código:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
foto="D:\ssss\miweb.com\Html\fotos\"
foto=foto&ref&".jpg"
If objFSO.FileExists(foto) Then
	on error resume next '''''''' Esto es totalmente necesario para evitar errores en pantalla, etc...
	objFSO.DeleteFile foto, force 'si está read-only, al carajo y la borramos igual :D
		if Err.Number > 0 then 'Oppsssss!!!
			Response.write "Hubo un error al intentar accesar al archivo que deseas borrar"
		end if
Else
	Response.Write("El archivo " & foto & " no existe.")
End if

Bueno, quedó depurado ya o le ven alguna posibilidad más?


¡¡¡TOOOMEENLA!!!!
jajaja, no se crean que es jodaaaaa
__________________
...___...
  #14 (permalink)  
Antiguo 11/05/2005, 14:58
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Bien...

Yo dejaria el on error justo donde lo deje, de hecho quizas al principio, porque lo mismo, al momento de manipular un archivo bloqueado etc, podrias obtener errores. Entonces si sabes que vas a manejar elementos muy delicados, entonces mejor asegurar desde el principio que no vas a tener resultados en pantalla erroneos.

Lo que pasa cuando un archivo esta siendo accesado por otra persona y tu lo borras con FORCE es que puedes provocar un error no a ti en pantalla, sino a la otra persona que lo estaba mirando en ese momento, por lo tanto no es recomendable, es muy comun cuando tienes por ejemplo fotos en tu cuenta publica, si la borras directamente las persona que estan viendo tus fotos en tu cuenta pueden ver errores imprevistos, porque?, porque en ese momento el archivo estaba bloqueado para borrarse, y con force no hiciste caso a esa restriccion de sistema.

Por eso mejor que a ti al momento de borrar tus fotos te diga un mensaje controlado de que esta pasando, en lugar de tener errores criticos en otros puntos del sistema.

Ademas, usando force tambien arroja error claro si llegan a ese punto dos usuarios al mismo tiempo, pero bien, como tienes el on error justo antes por eso no miraras el error, y en ese caso esta bien.

Por eso pienso que lo mejor es no usar Force para todo, de hecho si se usa, pero en partes especiales de los sistemas, ejemplo, borrando un archivo temporal, borrando respaldos de bases de datos, etc., es decir, cosas que no quieres PARA NADA que esten ahi, pero es a nivel administración, no a nivel WEB para usuarios.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #15 (permalink)  
Antiguo 11/05/2005, 15:18
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
En mi particular punto de vista On Error debe ser utilizado para dar alternativa a "errores" y por errores yo entiendo a eventos especiales que no pueden ser previstos por código. El hecho de si un archivo esta o no esta, pues es una simple validación, pero el caso de si el archivo esta bloqueado, por ejemplo, si es un candidato para el on Error (si es que el lenguaje no proporciona mecanismos para verificarlo).
En VBScript no existen mecanismos estructurados de manejo de errores y creo que no hay métodos para uno arrojar (raise) errores propios. Entonces nos quedan solo manejos genericos de errores para todo aquello que no se pueda validar. Aunque siempre tendremos la alternativa de una página de error a nivel del IIS.
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 20:55.