Comunidad de diseño web y desarrollo en internet online

Control de errores [ try & catch ]

Citar            
MensajeEscrito el 27 May 2009 03:01 pm
Bueno leyendo sobre esto en la documentacion de adobe no me ha quedado muy claro... mas que hay algunos que se pueden controlar y otros que no :S

Me hablan de try y catch... y si, he entendido como funciona y tal... pero mi duda viene aqui:

Los posibles errores que se pueden generar en mi aplicacion son:

- Que no haya mosca:

Código :

Error #2044: IOErrorEvent no controlado: text=Error #2035: No se encuentra la dirección URL.

- Que no haya cortinillas:

Código :

Error #2044: NetStatusEvent no controlado: level=error, code=NetStream.Play.StreamNotFound
at RepFla_fla::MainTimeline/setupStream()
at RepFla_fla::MainTimeline/onNcStatus()

- Que no haya video:

Código :

Error #2044: NetStatusEvent no controlado: level=error, code=NetStream.Play.StreamNotFound
at RepFla_fla::MainTimeline/setupStream()
at RepFla_fla::MainTimeline/onNcStatus()


Ahora os preguntareis, vale esos son los errores, porque no aplico el try[/] y el [i]catch directamente??

Porque no le puedo decir que si son null que haga una cosa u otra porque esas variables las coje del HTML, es decir si ejecuto la aplicacion en "Flash" [Ctrl + Enter] siempre van a ser null porque no las rescata del html.

Entonces no se como hacerlo :S

Nuevamente... ayuda !! :oops:

Andrés.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2009 03:47 pm
Hola

Tenes q hacer las 2, por un lado, validar q las variables q recoje desde el html sean las correctas (o las mas correctas posibles) y tambien el try...catch. Con eso evistas casi en un 100% de que se produja un error no controlado en esa parte del codigo.

Igualmente hay q tratar de usar responsablemente el try...catch ya q requiere muchisimos mas recursos q un simple if...

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 27 May 2009 03:55 pm
Me explicare mejor.

Lo que quiero hacer es que si alguna de mis variables, El video, la cortinilla, y la mosca, no existiese; osease que por si algun motivo no se definen (en el caso de las cortinillas y el video) y no estubiesen presentes en la carpta (la mosca, es un archivo swf que lo cargo en un MC) que la aplicacion no se pare, que siga ejecutando el codigo con las cosas que tiene... por eso no se si try & catch me sirven o, somo tu dices, deberia hacer una funcion con muchos "if" xD

Andrés.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2009 04:50 pm
He intentado hacer una funcion de la siguiente manera :

Código :

function setupVal {
var varMosca:String =  LoaderInfo(this.root.loaderInfo).parameters.moscaVar;
   var urlVideoC:String = LoaderInfo(this.root.loaderInfo).parameters.varUrlC;
    var urlVideo:String = LoaderInfo(this.root.loaderInfo).parameters.varUrl;
   if (varMosca != null && urlVideoC != null && urlVideo !=null) {
      setupStreamFull();
   } 


Vale, si eso no es igual a null me deberia reproducir los videos sin problemas porque de momento todo esta en su sitio, pero no es asi... creo que es porque por lo que he dicho antes, que el swf no coje los valores del HTML, y si lo ejecuto desde el HTML tampoco lo traga :S

La verdad es que no se como hacerlo... porque supongo que con el try/catch me pasara mas de lo mismo...

Alguien me puede orientar ??

Andrés.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 May 2009 08:43 pm
Hola

Tenes q hacer las 2 cosas, te explico:

La validacion de los datos q vienen desde el HTML la tenes q hacer simpre, es un punto básico en la seguridad y ademas estarias previniendo errores durante la ejecución del programa.

El uso de try..catch es util porque muchas veces las clases se AS3 lanzan exepciones (llamadas throw, q asi tambien se llama la instruccion as3 para lanzar la excepcion). Las excepciones pueden ser lanzadas aun cuando los datos q le pases sean los correctos, por ejemplo, si estas haciendo streeming de un FLV, si el directorio del servidor no tiene permisos de lectura te va a lanzar un throw. Lo malo es que en muchos casos vas a tener q detectar estos tipos de errores por intermedio de throw y de listeners de eventos (el famoso addEventListener), ¿cuando utilizar cada uno de ellos o los dos? Pues en la documentacion de las clases te informan si lanzan excepciones y/o eventos de error y cuales.


Bien, veamos el ejemplo en concreto q colocaste. Lo primero q tenes q hacer es hacer "trace" de los datos q recojes del LoaderInfo, ahi te vas a dar cuenta si trae datos o no. Por el otro lado, a las validaciones le agregaria q verifique q tambien sea diferente a vacio ( != "") y tambien por ejemplo en la variable de url, verificaria q el formato del texto sea el correcto.
Es probable que estes colocando mal la url del archivo o algo por el estilo.

PD: Ya estoy muy acostumbrado a Flex q no recuerdo como sacar los parametros del swf creado en flash... si no te sale avisa q intento darte una mano tambien por ese lado.

Saludos y cualquier cosa avisa

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 28 May 2009 06:24 am
Para saber los parámetros que te vienen de FlashVars puedes escribir

Código ActionScript :

var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
for (keyStr in paramObj) {
     valueStr = String(paramObj[keyStr]);
     trace(keyStr + "=" + valueStr);
    }

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2009 07:43 am
Alfathenus: El problema con los "traces" a los loaderInfo es que siempre me devuelve "undefined" o "null"... pero luego ejecutado desde el HTML me los coje sin problemas.

Eliseo: Tu codigo me da un error... no si es que tengo que cambiarlo o es alguna variable que tengo que definir. me refiero al parametro "keyStr".

Andrés.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2009 08:01 am
vale, le faltaba

Código ActionScript :

for (keyStr:String in paramObj) { 
     .....
}

Tal y como dices, siempre que NO lo ejecutemos desde el html, va a devolver "undefined". Como lo tenemos que probar una solución es un "if"

Código ActionScript :

//definimos aquí las variables
var varMosca:String;
var urlVideoC:String;
var urlVideo:String
if (LoaderInfo(this.root.loaderInfo).parameters){  //si existe
   varMosca:String =  LoaderInfo(this.root.loaderInfo).parameters.moscaVar;
   urlVideoC:String = LoaderInfo(this.root.loaderInfo).parameters.varUrlC;
   urlVideo:String = LoaderInfo(this.root.loaderInfo).parameters.varUrl;
}else{
    //podemos poner unos datos de prueba
    varMosca="mosca_por_defecto"
    urlVideoC="Video por defecto"
    urlVideo="Video por defecto"
}

Un try catch sería

Código ActionScript :

var varMosca:String;
var urlVideoC:String;
var urlVideo:String
try{
   varMosca:String =  LoaderInfo(this.root.loaderInfo).parameters.moscaVar;
   urlVideoC:String = LoaderInfo(this.root.loaderInfo).parameters.varUrlC;
   urlVideo:String = LoaderInfo(this.root.loaderInfo).parameters.varUrl;
}catch (e:Error){
   ...podemos ponerle aquí los valores por defecto....
   ...o dejarlo en blanco...
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2009 08:16 am
No soy capaz...

Poniendo el codigo de Eliseo de if else me devuelve:

TypeError: Error #2007: El valor del parámetro url debe ser distinto de null.
at flash.display::Loader/_load()
at flash.display::Loader/load()
at RepFla_fla::MainTimeline/setupStream()
at RepFla_fla::MainTimeline/onNcStatus()

Me gusta el mecanismo del if else, asique me gustaria seguir con este pues me resulta mas facil.

y con el try catch lo mismo :S

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2009 12:27 pm
Uffff...

No hay manera.. he intentado de todas las formas posibles... pero nada...

en fin... si alguien me puede ayudar bien... si no... pues nada

Andrés.

Por NiGGa

35 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 May 2009 02:13 pm
Bueno tengo ya la funcion para hacer que si no existe alguno de los tres parametros funcione, Bueno ahora intentare explicarme lo mejor posible.

Si quito la variable del html el programa no se para y no muestra la mosca en este caso, pero si la defino, al devolverme "null" en la variable del SWF tampoco me la muestra...

Solo quiero saber si hay alguna forma de hacer que el swf me coja la variable del HTML y que me muestre "algo"... porque si no siempre sera "null"

Andrés.

Por NiGGa

35 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.