Tratarea excepțiilor în clase și codul din spatele cu C #

voturi
1

Sunt un pic blocat cu un proiect de asp.net care fac! Am o clasă care este numit de codul din spatele și multe dintre funcției sale nu au nici un tip de întoarcere și anume, fiind nule. Cum se poate face excepție de manipulare, atunci ??? De asemenea, în cazul în care funcția în cadrul clasei are un tip de întoarcere, de exemplu, un set de date cum ar fi o apoi să se întoarcă o excepție sau indică faptul că o excepție a apărut? Am atașat următorul cod din clasa mea care se face referire la codul din spatele.

public void fnRecord(string []varList, string fnName)
    {
        try
        {
            String x;

            StringBuilder SQLParameters = new StringBuilder();

            SQLParameters.AppendLine(SELECT #{Function}();
            {
                SQLParameters.Replace(#{Function}, fnName);
            }

            for (int i = 0; i < varList.Length; i++)
            {                   
                x = varList[i].ToString();
                SQLParameters.Append(' + x + ',);
            }

            SQLParameters.Remove((SQLParameters.Length - 1), 1);
            SQLParameters.Append());

            string SQLCMD = SQLParameters.ToString();

            conn.Open();
            NpgsqlCommand command = new NpgsqlCommand(SQLCMD, conn);
            Object result = command.ExecuteScalar();
        }

        catch (NpgsqlException ne)
        {
            //return ne;
        }

        catch (Exception x)
        {
            //error code
        }

        finally
        {
            conn.Close();
        }
    }

Orice ajutor ar fi apreciat!

Mulțumiri

Întrebat 18/11/2008 la 09:35
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
1

Numai captura excepțiile în cazul în care intenționați să le trateze în mod corespunzător. Dacă doriți să reflecte erorile din interfața de utilizare, prinde-le la UI. Dacă doriți să le manipuleze și să încerce să se ocupe de problema în logica de afaceri, apoi prinde-le și să le ocupe în acel moment.

Apropo, codul este influențabile SQL injection atacuri. Cel mai bun du - te invata ceva despre interogări parametrizate .

Publicat 18/11/2008 la 09:43
sursa de către utilizator

voturi
0

Nu întoarce excepții. Tu le arunci. Acesta este punctul de excepții - nu doriți manipulare excepție aglomera semnaturile metoda!

În clauzele de captură dvs., nu face de fapt nimic pentru a gestiona excepțiile. Atunci nu ar trebui să-i prind deloc, doar lasa-le cu bule de până la dvs. de cod în spatele, și prinde-le acolo - a pus un try-catch a rundă apelul metodei.

Alternativ, captura de excepțiile SQL în metoda dvs., apoi arunca o nouă excepție, cu unele mesaj de sensibil, adăugând SqlExceptions ca excepție interioară, ca aceasta

catch (NpgsqlException ne)
{
    throw new Exception("Your explanatory message here", ne);
}
finally
{
    ...
}
Publicat 18/11/2008 la 09:46
sursa de către utilizator

voturi
0

Vă mulțumim cool pentru răspunsuri ... care lucrează cu biblioteca obout astfel încât trebuie să încerce și să lucreze în funcțiile lor de manipulare excepție prea.

Publicat 18/11/2008 la 10:45
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more