[JS] Externe exceptions negeren binnen try/catch constructie

Pagina: 1
Acties:

  • Bartjuh
  • Registratie: Oktober 2001
  • Niet online
Ik heb een try catch constructie binnen een functie.
Excepties moeten alleen opgevangen worden binnen handleReponse, dus niet binnen func.
Dit is omdat functies geregistreerd kunnen worden, die worden aangeroepen bij bepaalde events binnen het object. Deze functies moeten verder geen invloed hebben op de werking! Fouten binnen die functies moeten naar gelieve zelf op gevangen kunnen worden.

Ik heb zeg maar een soort voorbeeld gemaakt van het probleem: (niet de echte code!)
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
http_soap.prototype.handleResponse = function()
{
  try
  {
    if(this.y != 3) throw new Error('','Y is niet 3');  // Error moet wel opgevangen worden!

    this.registeredFunction(param);
  }
  catch(er)
  {
    alert('Error in handleResponse: '+ er.description);
  }
}

objHttp = new http_soap();
objHttp.registeredFunction = func;
objHttp.handleResponse();

function func()
{
  throw new Error('','Deze error moet niet opgevangen worden!');
}


Op dit moment wordt de error in de 'gewone' func functie wel opgevangen!

Weet iemand hoe ik dit moet doen?

Ook wel leuk zou zijn, dat wanneer een functie wordt aangeroepen, de code binnen het object verderloopt, apart van de functie, en dus niet op de functie wacht..

alvast bedankt!! _/-\o_

[ Voor 5% gewijzigd door Bartjuh op 04-03-2005 12:11 . Reden: Wat foutjes in code ;) ]


  • neh
  • Registratie: Juni 2001
  • Laatst online: 04-05 09:55

neh

Zet een aparte try-catch om het aanroepen van die 'externe' functie en doe vervolgens niks in de catch?

Voor je 2e vraag. Ik ben geen JS guru, maar het lijkt me sterk dat je zoiets voor elkaar krijgt. Wat jij beschrijft vereist multithreading en volgens mij bevat het originele javascript daar geen functionaliteit voor.

[ Voor 54% gewijzigd door neh op 04-03-2005 11:41 ]

XT, 640K ram, 20 MB harddisk, MS-DOS 4.0...


Verwijderd

Javascript is single-threated. De enige uitzondering die ik ken is de property async van msxml.

  • Bartjuh
  • Registratie: Oktober 2001
  • Niet online
Heb het nou in een apart scriptje getest, en een aparte try/catch binnen een try/catch verhelpt het probleem wel. :)
In mij originele code kreeg ik toen fouten, zal wel wat syntax verkeerd hebben ofzo ;)

Overigens moet je bij een try block een catch block hebben (ook al doe je niets met de catch), in C# hoeft dat volgens mij niet...

Bedankt jongens voor de hulp ! ;)

  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 08-05 22:42
Bartjuh schreef op vrijdag 04 maart 2005 @ 12:18:
Overigens moet je bij een try block een catch block hebben (ook al doe je niets met de catch), in C# hoeft dat volgens mij niet...
Om wat te doen? Als je bedoelt dat je dat altijd in JS nodig hebt, is dat onzin..

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


Verwijderd

Nee dat is geen onzin, anders mag je het me laten zien. In javascript vereist een try een catch block, ander krijg je netjes de melding dat er geen catch block is gedefinieerd.

De enige manier om zulke zaken te verdoezelen is inderdaad het nesten van try en catch blocks. :) Kijk ook eens naar de mogelijkheden van try en catch, je kunt zelf error types specificeren en throwen. :)

[ Voor 93% gewijzigd door Verwijderd op 04-03-2005 16:26 ]

Pagina: 1