21. marts 2007 - 18:57Der er
13 kommentarer og 1 løsning
catche bestemt fejl
Jeg har nogle sider, der alle nedarver fra min BasePage, som så nedarver fra Page.
I min BasePage håndterer jeg fejl i min OnError-metode. Hver gang en af mine sider kaster en exception, så redirectes brugeren til en fejl-side. Dette gør, at ligemeget hvilken fejl der sker, så får brugeren en besked om dette på en præsentabel måde.
Dog er det er lille "men":
Jeg får nogen gange en deadlock fejl i databasen grundet en anden kode, der laver locks på nogle tabeller. Når denne fejl sker, håndteres det af en eller anden grund ikke af OnError og brugeren ser istedet en ASP.NET fejlside.
Fejlen lyder som følger:
"Transaction (Process ID 181) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction."
Er de rnogen der ved, hvorfor denne fejl ikke håndteres som alle de andre exceptions og gribes i OnError?
Og hvordan giver jeg en brugervenlig meddelelse i dette tilfælde?
Well fejlen sker jo grundet en dead lock i dette tilfælde. De tilfælde hvor fejlen opstår er ved relativt kortvarige kald, hvor jeg blot foretager simple udtræk.
Exception Details: System.Data.SqlClient.SqlException: Transaction (Process ID 181) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Nej det synes jeg ik jeg gør. Altså jeg kører ingen andre tråde en main-tråden på noget tidspunkt. Så jeg fatter ik at den exception ikke bliver grebet af min OnError-metode :(
Kan du ikke med debuggeren eller trace se hvilke tråde der kører tidspunktet for fejlen. Hvis din exception raises fra en anden tråd er det ikke sikkert den bliver fanget på din gui tråd...
I den metode jeg håndterede fejlen i, udsendte jeg en email herom. Dette kunne i nogen tilfælde også kaste en exception, som jo så ikke blev håndteret.
Dumme bajer på min regning :)
Men I må gerne lige lægge et svar begge to, så deler I point, som tak for interessen :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.