Newsgroup: it.comp.lang.javascript
Titolo: GESTIRE ERRORI RUN-TIME CON NN4

Ciao a tutti,
sto creando una pagina per inserire delle formule.
Il mio problema si basa sulla gestione di errori run-time,
ovvero, l'utente può inserire ogni tipo di formula
es. (2 * 5 - 3) / 2
so che tramite la funzione Eval( formula ) riesco a far calcolare il
risultato, il problema sta quando la formula è sbagliata.
Il codice riportato qui sotto con IE funziona e ritorna l'errore
dell'oggetto,
mentre con NN4 si blocca e la funzione non viene più eseguita, perchè la
formula "1 + 2++" è errata.
try
    formula = (eval("1 + 2++"));
}
catch(e){ 
    alert(e); 
    return false 
}
A questo punto penso che try e catch non siano supportati da netscape,
come faccio a gestire gli errori run-time con netscape e IE?
Tutto questo per non creare un parser che analizzi tutta la formula (il che sarebbe inopportuno).
Spero che voi smanettatori del javascript abbiate una soluzione.
Ringrazio tutti in anticipo e specialmente che mi darà una risposta.
Ciao Igor

"Igor Carè" wrote:

Hai provato gestendo l'evento onError?
Ho dato solo un occhiata alla documentazione, non ho mai provato.
Ciao
Marcello

> A questo punto penso che try e catch non siano supportati da netscape,
se ben ricordo, NS4.(7?) supporta JavaScript1.3, che non implementa try &
catch.
JavaScript1.5, che ricalca le specifiche di ECMASscript3.0 (ECMA-262 ver
3.0), le implementa. e' supportato da NS6, Mozilla, IE4+
spero di non vere fatto confusione con le versioni.
ciao
--
    Federico Sasso &8v>
 
http://www.crt.unige.it/jsSQL
    The jsSQL Project - JavaScript Database and SQL Engine

Ho provato a creare la funzione
function window_onerror()
    alert("errore")
    return true
}
e ha richiamarla nel body cosě:
onerror="return window_onerror()"
ho tolto tray e catch e ho messo la seguente riga che genera un errore
formula = (eval("1 + 2++"));
con IE5 da un'errore di run-time e si blocca,
mentre con Netscape non fa proprio nulla.
penso che non parta l'evento di onerror
Cosa devo fare?

"Igor Carč" wrote:

onerror funziona solo su window e img.
Questo esempio (dalla documentazione di javascript per Netscape) anche se
non fa proprio al caso tuo, potrebbe servirti.
<SCRIPT>
window.onerror = myOnError
msgArray = new Array()
urlArray = new Array()
lnoArray = new Array()
function myOnError(msg, url, lno) {
   msgArray[msgArray.length] = msg
   urlArray[urlArray.length] = url
   lnoArray[lnoArray.length] = lno
   return true
}
function displayErrors() {
   win2=window.open('','window2','scrollbars=yes')
   win2.document.writeln('<B>Error Report</B><P>')
   for (var i=0; i < msgArray.length; i++) {
      win2.document.writeln('<B>Error in file:</B> ' + urlArray[i] +
'<BR>')
      win2.document.writeln('<B>Line number:</B> ' + lnoArray[i] +
'<BR>')
      win2.document.writeln('<B>Message:</B> ' + msgArray[i] + '<P>')
   }
   win2.document.close()
}
</SCRIPT>
<BODY onload="noSuchFunction()">
<FORM>
<BR><INPUT TYPE="button" VALUE="This button has a syntax error"
   onClick="alert('unterminated string)">
<P><INPUT TYPE="button" VALUE="Display Error Report"
   onClick="displayErrors()">
</FORM>
Spero ti possa essere d'aiuto
Marcello
PS.: secondo me hanno introdotto sta' cosa in NN un po' a tromba....

Ho provato ma non c'è la gestione di un errore Run time
grazie mille lo stesso.
Comunque la domanda è ancora aperta
Ciao
Igor Carè



 come faccio a gestire gli errori run-time con netscape e IE?
[]
NS4.x non utilizza le dichiarazioni try e catch; normalmente, inoltre,
non visualizza finestre per gli errori ma li scrive nella console
javascript (digita nella casella degli indirizzi  javascript: )
Comunque, gestisce, come IE, l'evento onError anche per gli errori
runtime.
Prova il seguente codice:
----------------
function seErrore(msg, url, lno) {
 alert(msg+'\n'+url+'\n'+lno)
   return true
}
onerror=seErrore;
function calcola(oForm){
 oForm.text2.value=eval(oForm.text1.value);
}
// -->
</SCRIPT>
</head>
<body >
<FORM action="" method=POST id=form1 name=form1>
<INPUT type="text" id=text1 name=text1>
<INPUT type="text" id=text2 name=text2>
<INPUT type="button" value="Button" name=button1
onClick="calcola(this.form)">
</FORM>
 ---------------
Saluti, Paolo
--------------------------
An error event occurs only when a JavaScript syntax or runtime error
occurs, not when a browser error occurs. For example, if you try set
window.location.href='notThere.html' and notThere.html does not exist,
the resulting error message is a browser error message; therefore,
onError would not intercept that message. However, an error event is
triggered by a bad URL within an IMG tag or by corrupted image data.
window.onerror applies only to errors that occur in the window
containing window.onerror, not in other windows.
onError can be any of the following:
null to suppress all JavaScript error dialogs. Setting window.onerror to
null means your users won't see JavaScript errors caused by your own
code.
The name of a function that handles errors (arguments are message text,
URL, and line number of the offending line). To suppress the standard
JavaScript error dialog, the function must return true.
A variable or property that contains null or a valid function reference.
If you write an error-handling function, you have three options for
reporting errors:
Trace errors but let the standard JavaScript dialog report them (use an
error handling function that returns false or does not return a value)
Report errors yourself and disable the standard error dialog (use an
error handling function that returns true)
Turn off all error reporting (set the onError event handler to null)
---------------------------------------

Il codice funziona benissimo con NS4.x,
mentre con IE non va,
la soluzione è di riconoscere il browser, se è NS4 utilizzare
l'evento onError
altrimenti uso try e catch.
Un ringraziamento a tutti e soprattutto a Paolo che mi ha illuminato.
Igor

 altrimenti uso try e catch.
[]
Con IE 5.1 funziona; con che versione di IE non va (onError dovrebbe
essere implementato dalla 3.02)? Quale errore ti restituisce?
Grazie, Paolo