Na een 3-Tier ASP.Net Web-applicatie te hebben gebouwd was het vandaag tijd om eens een simpele exceptionhandling klasse te schrijven die exceptions van de verschillende lagen kan loggen en uiteindelijk kan teruggeven naar de presentatie-laag.
Dit doet het op dit moment door een arraylist van "ExceptionStruct"'s bij te houden die mbv de class (static) function Catch (ex : exception ) worden gevult. De arraylist is ook een strict private class var (dus ook static). Daarnaast kan de hoeveelheid items in de arraylist worden teruggegeven mbv van de class function Count, en worden geleegd door de eveneens class function Clear.
In het pre-render event van de presentatie-laag (specifieker ;in de header) kan er worden gekeken of die Count groter dan 0 is, en als dat zo is kan er een specifieke error pagina worden gecreeerd en de fout kan naar de database worden geschreven.

So far So good. Enkel toen merkte iemand op of dat eigenlijk wel werkt met als er meer dan een user tegelijkertijd met de web-applicatie werkt. Tja en toen kwam ik achter mijn denk fout: Omdat de klasse eigenlijk alleen maar static functions en variabelen heeft komt elk browserwindow er mee inaanraking. Dus als user 1 een fout maakt, komt de Count bij alle andere users ook op > 0 te staan en krijgen ze een mooi opgemaakte error pagina
.
Is er een manier om er voor te zorgen dat iig de Catch methode static zijn exceptions te laten ontvangen en in de arraylist te schuiven, maar dat er voor de rest wel een instantie van de overige methoden en variabelen (dus voor hier de ArrayList, Count en Clear). Zodat eigenlijk elke user zijn eigen instantie krijgt.
Ik hoop dat mijn verhaal een beetje duidelijk was, anders hoor ik het waarschijnlijk wel
.
PS. Ik weet wel dat ik ook de ArrayList van ExceptionStruct's ook wel op een enkel UserID kan sorteren, maar ik wil eens voor een nette oplossing gaan.
Dit doet het op dit moment door een arraylist van "ExceptionStruct"'s bij te houden die mbv de class (static) function Catch (ex : exception ) worden gevult. De arraylist is ook een strict private class var (dus ook static). Daarnaast kan de hoeveelheid items in de arraylist worden teruggegeven mbv van de class function Count, en worden geleegd door de eveneens class function Clear.
In het pre-render event van de presentatie-laag (specifieker ;in de header) kan er worden gekeken of die Count groter dan 0 is, en als dat zo is kan er een specifieke error pagina worden gecreeerd en de fout kan naar de database worden geschreven.

So far So good. Enkel toen merkte iemand op of dat eigenlijk wel werkt met als er meer dan een user tegelijkertijd met de web-applicatie werkt. Tja en toen kwam ik achter mijn denk fout: Omdat de klasse eigenlijk alleen maar static functions en variabelen heeft komt elk browserwindow er mee inaanraking. Dus als user 1 een fout maakt, komt de Count bij alle andere users ook op > 0 te staan en krijgen ze een mooi opgemaakte error pagina
Is er een manier om er voor te zorgen dat iig de Catch methode static zijn exceptions te laten ontvangen en in de arraylist te schuiven, maar dat er voor de rest wel een instantie van de overige methoden en variabelen (dus voor hier de ArrayList, Count en Clear). Zodat eigenlijk elke user zijn eigen instantie krijgt.
Ik hoop dat mijn verhaal een beetje duidelijk was, anders hoor ik het waarschijnlijk wel
PS. Ik weet wel dat ik ook de ArrayList van ExceptionStruct's ook wel op een enkel UserID kan sorteren, maar ik wil eens voor een nette oplossing gaan.