C# - Mért nem kezeli az SqlException kivételt?
Try, catchekkel lefut teszi a dolgát, ha van hálózat.
Ha nincs hálózat akkor egyértelműen nem tud felcsatlakozni az sql szerverre.
Sajnos hiába készítem ezt a kivételkezést, leragad a program futása az sqlConn.Open()-nél és folyamatosan ezt írja ki az outputra:
Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.dll
nem ugrik tovább a kódban.
Így néz ki a kódom:
string query = "vmi lekérdezés";
using (SqlConnection sqlConn = new SqlConnection(nem érdekes))
using (SqlCommand cmd = new SqlCommand(query, sqlConn))
{
try
{
sqlConn.Open();
}
catch (SqlException e)
{
Console.WriteLine(e.Message);
return null;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return null;
}
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return dt;
}
Nem így értem, hanem, hogy biztos nem egy korábbi verziót futtatsz?
Breakpontok megállnak a kódban?
Buildelt újra!
Ezt VS 2015-ben írtam. Most hazajöttem és VS 12-ben futtatom. Igaz olyan 15 mp után de belép az SqlException ágba.
Holnap megnézem hogy a türelmetlenségem volt-e az oka hogy feltettem a kérdést.
Köszönöm a válaszod!
Az Using blokkot a fordító try-finally-nak fordítja. E mellett nem illik a catch ágat a kód kellős közepére rakni kódszervezési okokból.
Szerintem sokkal átláthatóbb lenne a kódod, és a hibára is könnyen rájönnél, ha ezt a struktúrát átalakítanád try-catch-finally-vé:
SqlConnection sqlConn;
SqlCommand cmd;
try
{
sqlConn = new SqlConnection();
sqlConn.Open();
cmd = new SqlCommand();
...
}
catch(ex)
{
...
}
finally
{
sqlConn.Dispose();
cmd.Dispose();
}
Köszönöm a kiegészítést!
Kiderült türelmetlen vagyok, timeoutja a kapcsolódás próbálkozásnak az adatbázishoz 15 mp.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!