Gå til innhold

Exception og sjekking av disse


Anbefalte innlegg

Har laget min egen ErrorManager som skal håndtere exceptions som er kjent for systemet, altså mine egne exceptions som jeg har definert slik:

 

public const string MyException = "Some text";

 

Så har jeg i min uvitenhet tenkt å bruke dette rundt omkring med en throw new exception

 

if(EttEllerANnet == NoeSomErFeil)
 throw new exception(MyException)

 

Dette er forsåvidt greit og ting funker, men så kommer min fine errorhandler inn i bildet. For når jeg skal håndtere denne exception så blir det ball

 

try
{
 KjøreKodeSomKasterEnException()
}
catch(Exception e)
{
 MyErrorHandler(e)
}

Så til min errorhandler klasse:

class ErrorHandler
{
 public void HandleError(Exception pException)
 {
switch(pException)
{
  case xxxxxx <---- Hva skal det stå her tro?
}
 }
}

Jeg har prøvd å sette inn mine CONST verdier men det blir bare feil. Ser jo at jeg sikkert kan CASTE, men jeg ville jo ha koden entydig da slik at det ikek er rom for feil etc.

 

Takker for all hjelp

Lenke til kommentar
Videoannonse
Annonse
Hehe, du fant ut at du kan bruke catch(System.IO.FileNotFoundException) f.eks. istedet for switch?

Nei. Fant ut at det var koden min som var formulert feil og tankegangen med konstanter som exceptions funker helt greit. Dermed kan jeg i alle CATCH stedene som skal behandles på samme måte, sende Exceptionen videre inn i en error handler. Ser ingen problemer med det jeg.....

Lenke til kommentar
Ja

 

try
{
 Application.Run(m_main);
}
catch(Exception ex)
{
 MessageBox.Show(ex.Message);
}

 

Skoleeksempel på perfekt exception handling hehe.

... håper ikke noen klarer å google dette svaret og ta det ut av sammenheng ...

 

Vell, dette forutsatt at kunn det globale stedet skal håndtere en exception. Jeg bruker exception i mange andre steder i koden for å "terminere" ugyldige situasjoner. Synes det var en god ide jeg, men det er kansje ikke det? Kjenner ikke .NET så bra at jeg kan si noe om dette. Gikk bare ut ifra at jeg kunne bruke Try/Catch til mer enn bare håndtering av exceptions som kommer av .net klassene.

Lenke til kommentar
Jo, men da bør du kanskje lage dine egne Exceptions? For en litt bedre oversikt over HVA som feiler. Uten at man må parse errormessagen for å finne det ut.

Ja, er det ikke akkurat det jeg gjør ved å lage konstanter da?

 

Jeg ønsker ikke å håndtere exceptions i CATCH området fordi da må jeg gjøre den samem jobben over allt. Jeg ønsker å sentralisere hele greia inn i en klasse/metode. Kansje ikke exceptions er tingen her? Mulig jeg blei litt overivrig når jeg fant ut at ved å kaste en exception så ville all kode i den aktuelle metoden terminere og kontrollen automatisk gikk tilbake til der hvor metoden blei kallet. Kansje dette var en dårlig ide.

Det så bare så genialt ut at jeg kunne gjøre likt. Får nok finen på noe annet...

Lenke til kommentar
Jo, men da bør du kanskje lage dine egne Exceptions? For en litt bedre oversikt over HVA som feiler. Uten at man må parse errormessagen for å finne det ut.

Ja, er det ikke akkurat det jeg gjør ved å lage konstanter da?

Nei.

 

Du skal aldri kaste en exception ved å gjøre 'new Exception' -- lag heller din egen exception, altså en klasse som arver fra Exception og kast og fang denne.

 

class UserNotFoundException : Exception
{
// ...
}

 

Ellers tror jeg kanskje du bør se på UnhandledExceptionManager i Application-klassen hvis det er en Winforms-applikasjon du har.

 

Og jeg står ved mitt tidligere utsagn; kjøp deg en bok.

Lenke til kommentar
Jo, men da bør du kanskje lage dine egne Exceptions? For en litt bedre oversikt over HVA som feiler. Uten at man må parse errormessagen for å finne det ut.

Ja, er det ikke akkurat det jeg gjør ved å lage konstanter da?

Nei.

 

Du skal aldri kaste en exception ved å gjøre 'new Exception' -- lag heller din egen exception, altså en klasse som arver fra Exception og kast og fang denne.

 

class UserNotFoundException : Exception
{
// ...
}

 

Ellers tror jeg kanskje du bør se på UnhandledExceptionManager i Application-klassen hvis det er en Winforms-applikasjon du har.

 

Og jeg står ved mitt tidligere utsagn; kjøp deg en bok.

La oss legge ned dette forum og kjøpe bøker i stedet....

 

Jeg har mange bøker, men greia er at det ikke alltid er lett å vite hva man skal se etter, spesiellt fordi man er vant til å gjøre ting på en annen måte. Finnes liksom dårlig med "Howto Clarion in .Net" - hvis du skjønner....

 

Man er ofte i den situasjonen at man har kodet over en lang stund, kansje i flere år, og man venner seg til forskjellige ting. Som f.eks. at man finner ut ved tilfeldigheter at det er noe som heter TRY/CATCH. I veldig mange av disse situasjonene så ser man ikke selv at man ikke er på rett spor, nettop fordi kompilatoren ikke sier noe og at programmet tilsynelatende virker perfekt, nettop som i dette tilfellet. Det er ingenting i mitt program som tilsier at måten jeg har gjort det på ikke fungerer, for det gjør nettop det. At jeg lager nye Exceptions har jeg aldri sett på som et problem. Faktisk har jeg alltid gjort det slik uten å tenke på hvilke konsekvenser dette kunen medføre, nettop fordi jeg ikek visste at det hadde konsekvenser.

I neste omgang så poster man en melding på et forum, som her, som ikke engang omhadler problemstillingene som andre mener en bør ta hensyn til, som det å lage nye exceptions. Bare å lese mitt første innlegg så ser du hva jeg mener. Da blir det litt vissent å få beskjed om å kjøpe bøker.

 

Ut over alt dette så takker jeg selvsagt for svar og hjelp ;-)

Lenke til kommentar
Ok.

 

Ihvertfall går det fint å lage egne exceptionsklasser, fordi du sparer en switch blokk for hver Try du lager, og istedet kan du lage et generelt rammeverk av klasse for exceptions i programmet.

Absolutt, det har jeg skjønnt ;-)

 

Studerer exceptions i dette øyeblikk for å se om jeg kan gjøre dette på en annen måte.

 

Nå er det påkker meg snart 17. mai. Da må vi gå i tog, grille og kansje tilogmed en liten pjall...... hihi - hvem vet

Lenke til kommentar

Hehe fort gjort :)

 

Jeg skal på tønsbergmessa også - egentlig hater jeg det stedet, skjønner ikke hvordan de presterer å ta penger for å la folk komme inn på et sted der alle prøver å prakke på deg alt mulig dritt.

 

Kanskje fordi de har møkkaband som DDE og slikt som spiller live... uff.

 

Men det er karuseller der :D dessuten slipper jeg å tenke på unhandled exceptions og hvor teit MySQL er, og hvor ufattelig lang latency det er på databaseserveren.

Lenke til kommentar
Hehe fort gjort :)

 

Jeg skal på tønsbergmessa også - egentlig hater jeg det stedet, skjønner ikke hvordan de presterer å ta penger for å la folk komme inn på et sted der alle prøver å prakke på deg alt mulig dritt.

 

Kanskje fordi de har møkkaband som DDE og slikt som spiller live... uff.

 

Men det er karuseller der :D dessuten slipper jeg å tenke på unhandled exceptions og hvor teit MySQL er, og hvor ufattelig lang latency det er på databaseserveren.

Du glemte jo helt: Linux suger (ole gjemmer seg for haggelet av dårlige kommentarer etter denne uttalelsen)

Lenke til kommentar

Haha, Linux kan være et helvete ja, kommer helt an på distro, og om en elsker config filer eller ikke (jeg hater config filer, dette er ikke 1978)

 

Men linux har en betydelig bedre terminal en den dritten som er i Windows.

Windows PowerShell er ganske bra tror jeg, men jeg har ikke satt meg så veldig inn i den.

Lenke til kommentar
Haha, Linux kan være et helvete ja, kommer helt an på distro, og om en elsker config filer eller ikke (jeg hater config filer, dette er ikke 1978)

 

Men linux har en betydelig bedre terminal en den dritten som er i Windows.

Windows PowerShell er ganske bra tror jeg, men jeg har ikke satt meg så veldig inn i den.

Stemmer på en prikk. Config filer er for geeker og andre retro folk ;-)

 

For å ta Linux litt i forsvar så er den jo ganske genial i forhold til Linux. Man kan f.eks. se på TV på alle PC'ene i huset via en Dreambox - HIHIHI

 

Neida, den er også nyttig til andre ting. Som f.eks. å ha inne i små hardware duppeditter som Linksys routere etc. Faktisk ganske genialt egentlig akkurat det der for de kan flashes. Jeg og en kollega driver med HotSpot tjenester og plasserer DSL linjer med slike routere rundt omkring der det er masse folk. Så kan folk logge seg på med sitt kredittkort og surfe på internet ;-)

 

Men nå er det på tide med fòr..... Sulten......ahhhhh.....

Forresten, eldstemann i huset er russ i år og han fikk den optimale presangen av meg i forrige uke: Øljekk som er utformet som Homer Simpson som sier: To Alcohol! The cause and sollution to all life problems...

Lenke til kommentar

Hehe fin presang :)

Jeg har øljekk montert på baren her i huset, men folk bruker den ikke når det er her, istedet er det mange som bruker tenna, lightere, eller bordkanten på det shabby bordet som han ene her snekret sammen... selv om alle sitter i baren når de er her.

 

Det jeg liker med linux er.... øh....

....

at det er gratis.

Lenke til kommentar
La oss legge ned dette forum og kjøpe bøker i stedet....

Det var ikke det jeg sa, men for all del, putt meninger i andres munn.

 

Jeg har mange bøker, men greia er at det ikke alltid er lett å vite hva man skal se etter, spesiellt fordi man er vant til å gjøre ting på en annen måte. Finnes liksom dårlig med "Howto Clarion in .Net" - hvis du skjønner....

Dette er jo nettopp problemet. Du skal ikke skrive "Clarion og .NET". Du vil jo lære å skrive ordentlig "C# og .NET". Man uttrykker ting annerledes i C#. Noe av det du spør om er jo helt grunnleggende C#, ting som sikkert blir gjort fundamentalt annerledes i Clarion. Du vil aldri lære deg helheten og se sammenhenger hvis du skal lære alt fra raske forumposter. Ved å lese en bok vil du kanskje forstå mer av .NET.

 

Men vi er vel uenige på det punktet.

 

Resten av tråden under tror jeg at jeg skal la forbli :) Snart ferie for min del og jeg må vel være voksen nok til å ikke bli hisset opp av MS-fanboys? ;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...