Avatar billede chris535 Nybegynder
15. oktober 2010 - 22:18 Der er 5 kommentarer og
1 løsning

Problem med exception

Jeg er ved at genopfrisk min hukommelse omkring c# og asp.net og er løbet ind i et problem omkring exceptions.

Jeg har lavet en custom exception UserNotFoundException:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FcGnu.Business.exceptions
{
    public class UserNotFoundException : ApplicationException
    {
        private string messageDetails;

        public UserNotFoundException() { }
        public UserNotFoundException(string message)
        {

            this.messageDetails = message;
        }

        public string MessageDetails
        {
            get { return messageDetails; }
            set { messageDetails = value; }
        }

    }
}

For at teste den, kaster jeg den fra et midlertidigt sted:

private void putUserInSession(User user)
    {

        Session["authenticatedUser"] = user;
     
        throw new UserNotFoundException("wefdsf");
     
    }

I den same klasse, kalder jeg metoden putUserInSession:
...
try
        {
            user = login.validateUser(userName, password);
            isValidUser = true;
            putUserInSession(user);
        }
        catch (UserNotFoundException e)
        {
            Debug.WriteLine("Exception cauth while loggin in. Exception: " + e.Message);
            isValidUser = false;
        }

Mit problem er, at exceptionen aldrig forlader koden hvor jeg kaster den.

Det hele ligger bag en asp.net siden med et login billede. Når jeg forsøger at logge ind på siden, skifter fokus til visual studio og der kommer en besked "UserNotFoundException occurred" med en streg over til linjen hvor jeg kaster exceptioen. Den kommer altså aldrig tilbage til try/catch koden.

Kan i hjælpe?

I stedet for at kaste min egen exception har jeg prøvet med en system.exception. Der skete det samme...
Avatar billede heinzdmx Nybegynder
15. oktober 2010 - 22:49 #1
Muligvis vil en tidligere try-catch kommer ind og overtage den nedre try-catch

For eksempel:

main metode:
[code]
try
{
minmetode();
}
catch (Exception e)
{
// something
}

minmetode()
{
try
{
  user = login.validateUser(userName, password);
  isValidUser = true;
  putUserInSession(user);
  }
catch (UserNotFoundException e)
{
  Debug.WriteLine("Exception cauth while loggin in. Exception: " + e.Message);
  isValidUser = false;
}
}
[/code]


Så vil den øverste overtage, men den kan ikke håndtere denne fejl. Muligvis er det ikke det, men det kunne måske være?
Avatar billede Syska Mester
15. oktober 2010 - 22:50 #2
Ja, men hvad er problemet?

Hvis du trykker på "F5" er jeg sikker på den kommer videre.

Hvad står der i menuen:
Debug -> Exceptions ->
Break when an exception is: hvis der er flueven ved Throw, så gør den som den skal ... ellers slå det flueben fra.

mvh
Avatar billede Syska Mester
15. oktober 2010 - 22:55 #3
Exception er base class, så skal kan godt tage den. Tror problemet er opsætning siden han bliver kastet tilbage til visual studio, og ikke en YSOD. Altså må han køre med en debugger attached.

Og  måske er den setting jeg omtaler enabled.

mvh
Avatar billede chris535 Nybegynder
15. oktober 2010 - 23:26 #4
buzzzz du havde ret, et fucking flueben jeg har brugt 2-3 timer på at goggle... Som sagt er jeg ved at genopfriske visual studio, asp og c#...

Tak for svaret begge to. buzzzz smid et svar så du kan få nogle point...
Avatar billede Syska Mester
15. oktober 2010 - 23:31 #5
svar.

Men en rigtig nice setting at vide er der :-)

mvh
Avatar billede chris535 Nybegynder
15. oktober 2010 - 23:33 #6
True...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester