---
title: "Try and catch"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/157353-try-and-catch"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "smileenergy"
published: "2007-02-19T13:19:40.000Z"
updated: "2007-02-23T11:52:00.000Z"
replies: 8
views: 756
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/157353-try-and-catch"
---

# Try and catch

## #1 — smileenergy, 2007-02-19T13:19Z

Hej.. jag undrar om ngn vänlig person kan visa hur jag kan lägga till felhantering i det här nyhetsscriptet, jag har sökt på google osv men jag förstår inte riktigt hur jag ska använda det i mitt nyhetsscript så skulle underlätta väldigt mycket om någon kan visa hur det fungerar genom att lägga till try and catch satser..

public partiar class

```
private string strCon = @"Data Source=localhost;Initial Catalog=Projekt;User ID=user;Password=pass";
```

protected void Addnews()

```
SqlConnection cnn = new SqlConnection(strCon);
        //Parametrar
        SqlParameter subject = new SqlParameter("subject", txtSubjekt.Text);
        SqlParameter text = new SqlParameter("text", txtNews.Text);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cnn;
        cmd.CommandText = "INSERT INTO test (subject, [text]) " +
                          "VALUES (@subject, @text)";
        cmd.Parameters.Add(subject);
        cmd.Parameters.Add(text);
        cnn.Open();
        cmd.ExecuteNonQuery();
        cnn.Close();
        lblStatus.Text = "Din nyhet har lagts till";
        txtSubjekt.Text = "";
        txtNews.Text = "";
```

Permalänk: https://www.webforum.nu/p/157353

## #2 — butiko, 2007-02-19T13:30Z

En enkel try-catch kan se ut så här:

```
try {
  cmd.ExecuteNonQuery();
} 
catch (Exception ex) {
  // variabeln ex innehåller ditt felmeddelande
}
```

Permalänk: https://www.webforum.nu/p/1935924

## #3 — smileenergy, 2007-02-19T15:02Z

hur vet jag vad jag ska sätta som try och catch? 
och hur gör jag med

```
cmd.CommandText = "INSERT INTO test (subject, [text]) " +
                          "VALUES (@subject, @text)";
```

kan jag i try and catch t.ex. kontrollera om det står något värde i de där två kolumnerna eller måste jag göra det med en if sats någon annanstans i koden?

samt vad gör catch i föregående exempel.. try förstår jag men inte riktigt catch med Exception ex, vad är det för något t.ex.?

Permalänk: https://www.webforum.nu/p/1935948

## #4 — Pedda, 2007-02-19T19:52Z

Enkelt förklarat

```
try {
// kod som ska försöka köras, t.ex lägga in något i databasen
}
catch(Exception error) {
// fångar felmeddelandet, kan t.ex skrivas ut i en messagebox
MessageBox.Show(
       "Något gick fel!\n\n" + error.Message,
       "Felmeddelande",
       MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally {
// kod som alltid ska köras, t.ex close() på databasconnection
minDBConn.Close();
}
```

/red. Mitt exempel kanske inte var perfekt för ASP.NET men du förstår nog principen ;)

Permalänk: https://www.webforum.nu/p/1936019

## #5 — emission, 2007-02-20T20:56Z

> **smileenergy skrev:**
>
> kan jag i try and catch t.ex. kontrollera om det står något värde i de där två kolumnerna eller måste jag göra det med en if sats någon annanstans i koden?

Nej, du varken kan eller ska. Förväntade fel och validering av indata ska inte göras mha try-catch, utan hanteras av egen programlogik (t.ex. en if-sats).

Permalänk: https://www.webforum.nu/p/1936239

## #6 — smileenergy, 2007-02-21T18:20Z

ska jag göra en try and catch för varje liten kod som ska försökas köras för då blir det väldigt många eller ska jag göra en stor, kan ingen visa med nyhetskoden som jag skickade med där uppe i första inlägget.. det skulle beskriva det hela rätt bra antar jag.

Permalänk: https://www.webforum.nu/p/1936439

## #7 — VictorY, 2007-02-21T18:42Z

> **smileenergy skrev:**
>
> ska jag göra en try and catch för varje liten kod som ska försökas köras för då blir det väldigt många eller ska jag göra en stor, kan ingen visa med nyhetskoden som jag skickade med där uppe i första inlägget.. det skulle beskriva det hela rätt bra antar jag.

Alltså, en sak bara: Det är ingen idé att fånga exceptions om man ändå inte kan/tänker göra något vettigt med dem. Innan du börjar lägga in try-catch-grejer överallt bör du tänka över vad du vill uppnå. Ofta är det väl lika bra att bara låta den, "exceptionen", gå. Då får du ju ett vettigt felmeddelande när något händer.

Permalänk: https://www.webforum.nu/p/1936443

## #8 — butiko, 2007-02-22T07:48Z

> **smileenergy skrev:**
>
> ska jag göra en try and catch för varje liten kod som ska försökas köras för då blir det väldigt många eller ska jag göra en stor, kan ingen visa med nyhetskoden som jag skickade med där uppe i första inlägget.. det skulle beskriva det hela rätt bra antar jag.

Stopp stopp stopp! Du ska bara göra en try/catch runt sådan kod där fel kan uppstå **utan att du själv har någon möjlighet att påverka utfallet!** Som emission skriver så ska förväntade fel och validering hanteras med egen programlogik.

I ditt exempel så kan vara rätt att ha en try/catch när du ställer en fråga till databasen eftersom det där kan uppstå fel som du inte kan hantera på något annat sätt. Men ett ännu bättre sätt är att göra ett datalager och i detta använda using (sök på webforum, finns säkert trådar om det här).  

Att ha ett try catch runt ett helt kodblock är helt fel approach. Du ska inte laga rymskepp med tejp!

Permalänk: https://www.webforum.nu/p/1936537

## #9 — smileenergy, 2007-02-23T11:52Z

> **butiko skrev:**
>
> Stopp stopp stopp! Du ska bara göra en try/catch runt sådan kod där fel kan uppstå **utan att du själv har någon möjlighet att påverka utfallet!** Som emission skriver så ska förväntade fel och validering hanteras med egen programlogik.
> 
> I ditt exempel så kan vara rätt att ha en try/catch när du ställer en fråga till databasen eftersom det där kan uppstå fel som du inte kan hantera på något annat sätt. Men ett ännu bättre sätt är att göra ett datalager och i detta använda using (sök på webforum, finns säkert trådar om det här).  
> 
> Att ha ett try catch runt ett helt kodblock är helt fel approach. Du ska inte laga rymskepp med tejp!

jag har sökt och hittat lite svar på datalager, men using, vad innebär det?
skulle kännas bra om någon kunde posta ett praktiskt exempel hur man löser något sånt här med ett datalager då, en tråd lr ngt som visar för jag verkar ju inte hitta och vill gärna se hur det fungerar i praktiken då jag har rätt svårt för att förstå då någon bara försöker förklara hur bra förklaringen än är så det lättare att lära sig om man ser hur man kan lösa det.

Permalänk: https://www.webforum.nu/p/1939759

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/157353-try-and-catch
