Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Lanzar excepcion al fallar fopen

Estas en el tema de Lanzar excepcion al fallar fopen en el foro de PHP en Foros del Web. Hola amigos, como puedo lanzar una excepcion cuando la funcion fopen falla, ya que este no devuelve un valor bool. Lo estoy intentando con file_exists ...
  #1 (permalink)  
Antiguo 22/03/2014, 11:18
 
Fecha de Ingreso: agosto-2010
Mensajes: 59
Antigüedad: 13 años, 8 meses
Puntos: 2
Lanzar excepcion al fallar fopen

Hola amigos, como puedo lanzar una excepcion cuando la funcion fopen falla, ya que este no devuelve un valor bool. Lo estoy intentando con file_exists en el siguiente codigo:

Código:
<?php
$carpeta=array("primero","segundo","te*cero","cuarto","qui/to","sexto");
$Nombre=array();

for($i=0;$i<=5;$i++){
	
	$Nombre[$i] = fopen($carpeta[$i].".txt","a")
	try{
		if(file_exists($carpeta[$i].".txt")==false)
		throw new Exception("No se pudo crear el archivo ".$carpeta[$i]);
	}catch (Exception $e) {
		echo "Excepcion capturada: ",  $e->getMessage(), "\n";
	}		
}

?>
El codigo trata de crear archivos de nombres "primero","segundo","te*cero","cuarto","qui/to","sexto" pero como sabemos no se puede crear en windows archivos de nombre "te*cero" y "qui/to" en esos casos debe lanzar excepciones pero los demás si crearlos.

Gracias de antemano.
  #2 (permalink)  
Antiguo 22/03/2014, 11:28
lolainas
Invitado
 
Mensajes: n/a
Puntos:
para eso abrelos con splfileobject
  #3 (permalink)  
Antiguo 22/03/2014, 11:30
 
Fecha de Ingreso: agosto-2010
Mensajes: 59
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Lanzar excepcion al fallar fopen

Me faltaba un ; despues de $Nombre[$i] = fopen($carpeta[$i].".txt","a"), lo lamento.
  #4 (permalink)  
Antiguo 23/03/2014, 06:08
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Lanzar excepcion al fallar fopen

La lógica dice que deberías abrirlos con fopen sólo en caso de que existan, por lo tanto, yo haría primera la comprobación de que existe el fichero, si no existe lanzo la excepción, si existe lo abro...
Veo que has omitido el mensaje de SplFileObject, compruébalo tu mismo:

Código PHP:
Ver original
  1. $carpeta = array("primero", "segundo", "te*cero", "cuarto", "qui/to", "sexto");
  2.  
  3. try {
  4.     foreach ($carpeta as &$fichero)
  5.         $fichero = new \SplFileObject($fichero);
  6. }
  7. catch (\Exception $ex) {
  8.     echo "Excepción capturada: {$ex->getMessage()}\n";
  9. }

Ya verás cómo lanza excepciones.

Saludos.

Última edición por lolainas; 23/03/2014 a las 06:16

Etiquetas: excepcion, fopen, lanzar
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:28.