---
title: "Variable 'myValue' is used before it has been assigned a value"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/146317-variable-myvalue-is-used-before-it-has-been-assigned-a-value"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "CatZ"
published: "2006-05-02T04:46:12.000Z"
updated: "2006-05-03T18:05:56.000Z"
replies: 4
views: 366
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/146317-variable-myvalue-is-used-before-it-has-been-assigned-a-value"
---

# Variable 'myValue' is used before it has been assigned a value

## #1 — CatZ, 2006-05-02T04:46Z

```
    Function dbExecuteScalar(ByVal strSQL) As String
        Dim objConn As SqlClient.SqlConnection
        Dim objCmd As SqlClient.SqlCommand
        Dim myValue As String

        Try
            objConn = New SqlClient.SqlConnection(myConnectionString)
            objConn.Open()

            objCmd = New SqlClient.SqlCommand(strSQL, objConn)
            objCmd.CommandType = CommandType.Text
            myValue = objCmd.ExecuteScalar()
            objConn.Close()
        Catch

        End Try
        Return myValue
    End Function
```

 

Varfor far jag detta meddelandet?

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

## #2 — Gladh, 2006-05-02T05:23Z

```
 Function dbExecuteScalar(ByVal strSQL) As String
        Dim objConn As SqlClient.SqlConnection
        Dim objCmd As SqlClient.SqlCommand
        Dim myValue As String

        Try
            objConn = New SqlClient.SqlConnection(myConnectionString)
            objConn.Open()

            objCmd = New SqlClient.SqlCommand(strSQL, objConn)
            objCmd.CommandType = CommandType.Text
            [b]myValue = objCmd.ExecuteScalar()[/b]
            objConn.Close()
        Catch

        End Try
        Return myValue
    End Function
```

Du kan inte garantera att myValue verkligen får ett värde, då du kanske får ett fel när du försöker koppla upp dig mot databasen.

Så antingen ger du myValue ett default value när du skapar variablen, eller så får du ge myValue ett värde i din catch funktion.

En annan sak är att det är inte speciellt lyckat att lägga objConn.Close() där du har lagt den eftersom du återigen inte kan vara garanterad att den kodraden verkligen exekveras, vilket kan leda till att du inte får stängt din koppling till databasen. Din stängning av kopplingen skall ske i ett Finally-block eftersom det är garanterat att exekveras även om du får något fel i ditt try-catch block.

\- M

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

## #3 — P, 2006-05-02T05:32Z

Enklast är väl alltså 

```
Dim myValue as String = ""
```

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

## #4 — CatZ, 2006-05-02T07:20Z

Gladh! Nu blev jag riktigt glad, det var en mycket bra förklaring!!

P tack för det, visste inte man kunde göra på det viset.

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

## #5 — Gladh, 2006-05-03T18:05Z

En sak som jag glömde säga, att göra en try-cath så som du gjort där du inte gör något som helst i din catch, är en verklig no-no. Det är vad man kallar: exception-swallower.

Alltså att du får ett fel, men du kommer aldrig märka det eftersom du fångar det, men sedan gör du inget mer med det, du loggar inte det, du meddelar inte programet genom att kasta det vidare. Det kommer leda till problem senare när programmet sedan kör i skarp drift.

Vi hade just det problemmet i en av våra standard komponenter som hanterar databaskommunikationen, man hade gjort följande:

```
try{
connection.close();
}catch(Exception e){}
```

så trodde personen att allt var bra, problemet var bara i det lägget var connection objectet null, men kopplingen låg öppen via ett transactionsobjekt och detta resulterade i att kopplingen aldrig stängdes och tillslut så fick vi fel från connectionpoolen att det inte fanns några lediga connections att använda, detta skedde helt oregelbundet eftersom man använde komponenten olika mycket vid olika tider, så det tog lång tid innan vi hittade felet.

\- M

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/146317-variable-myvalue-is-used-before-it-has-been-assigned-a-value
