Avatar billede the_party_dog Nybegynder
29. januar 2004 - 10:05 Der er 7 kommentarer og
1 løsning

Try catch, forklaring mangles..

Jeg prøver på at lære at bruge Try-Catch funktionen i .NET 2002, men de sider jeg finder, giver mig ikke rigtig noget forståelse af hvordan det hele virker...

Er der ikke en som kan give et godt eksempel, ganske simpelt, og forklare hvordan tingene virker... Det jeg mangler er noget som håndtere hvis jeg fejler en funktion på min side, da jeg skal sende en mail...
Avatar billede the_party_dog Nybegynder
29. januar 2004 - 10:20 #1
Det skal lige siges at det bruges på en web side, med C#.... :)
Avatar billede odegaard Nybegynder
29. januar 2004 - 10:21 #2
koden inde i try kan opføre sig "som den lyster". Du kan derfor fange et crash, således at hele applikationen ikke vælter. Fx. hvis du dividerer med nul:
try {
  int a = 0;
  int k = 23 / a;
}
catch(System.Exception ex) {
  Response.Write("Der skete en fejl: " + ex.Message);
}
Avatar billede the_party_dog Nybegynder
29. januar 2004 - 10:23 #3
hmm.... Det vil sige at jeg næsten kan lave mit eget fejlhåndterings system, hvis jeg kender alle fejlene, og gemmer dem, og begynder at bruge if sætninger?
Avatar billede the_party_dog Nybegynder
29. januar 2004 - 10:29 #4
hvad så hvis jeg har 3 ting den skal gøre, hver for sig? Skal jeg så lave 3 gange try catch, eller kan jeg lave 3 try i træk, og en catch? Eller er det kun en try men mange catch?
Avatar billede sekhmet_ds Nybegynder
29. januar 2004 - 10:34 #5
Syntax er som følger:
try {
} catch (<exception-type> [<identifier>]) {
} [finally {
}]

I try delen skriver du den kode der muligvis fejler. Du skal dog være opmærksom på at det kun bør være fejl du ikke kan forudse. En fejl som f.eks. at dividere med 0 bør du ikke lave med try-catch da du selv kan tjekke for det.

I catch delen skriver du så den kode der skal udføres hvis koden i try delen fejler. Den exception der bliver kastet filtreres via den exception du selv angiver i catch (<exception-type>...). Således vil "catch (Exception) {}" fange alt men ikke gøre noget. Catch delen kan desuden overloades så du kan fange forskellige exceptions automatisk, f.eks.: try {bla} catch (Exception1) {} catch (Exception2) {}.

Finally delen behøver du ikke have med, men den kan være god til oprydning. Koden heri er garenteret at blive udført lige meget hvad der sker. Det vil sige at lige meget hvad du gør i try og catch delen bliver koden i finally delen kørt. Dette gælder også selvom du har en return statement i try eller catch delen, eller hvis din catch del kaster en ny exception.

Eks.:

StreamWriter writer;
try {
  writer =  = new StreamWriter("fil.txt");
  writer.WriteLine("nos");
} catch (IOException e) {
  Console.WriteLine(e.message);
} catch (PathTooLongException) {
  Console.WriteLine("Path to long, try again...");
} finally {
  if (writer != null)
      writer.Close();
}
Avatar billede odegaard Nybegynder
29. januar 2004 - 10:51 #6
du kan have et vilkårligt antal fejl i din try { }. Den fanger dem alle.
Du kan også fange specifikke fejl med flere catch. Fx.
try { ... }
catch(System.DivideByZeroException ex) {
    Response.Write("Du dividerede med nul");
}
catch(System.Exception ex) {
    Response.Write("Der skete en uventet fejl: " + ex.Message);
}
Avatar billede the_party_dog Nybegynder
29. januar 2004 - 10:55 #7
Jeg vender lige tilbage senere idag, eller senest i morgen med points, skal lige se om jeg kan få det til at virke i mit web, og se om jeg kommer ind i nogle problemer, men rigtige mange gange tak for jeres inputs... :)
Avatar billede the_party_dog Nybegynder
10. februar 2004 - 09:53 #8
Godt nok fik jeg aldrig det der try catch til at virke, men points skal du have sekhmet_ds, tror bare ikke jeg forstår iden bag alt dette, men det er også mindre vigtigt, det kommer en dag... :)
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