Jūs esate

MS SQL Server 2005 ir C# [papildyta]

Mano senesnėje programoje/žinutėje http://www.ernestas.info/?p=233 vienas mano blogo lankytojas pastebėjo rimtą klaidą. Dirbdamas su MS SQL duomenų baze aš gražinu -1 kaip klaidos pranešimą. Buvo pastebėta, kad tai rimta klaida. Tikslus pastebėjimas, tad į jį yra mano pasiteisinimai:
  1. Tai antra mano programa ant C#.
  2. Programa nerimta - skirta mokymosi tikslais.
  3. Ir aš iki išimčių apdorojimo (exception-handling) dar nepriskaičiau :D Žinojau, kad galima pagauti išimtį, o kaip ją "aukštyn" permesti - nežinojau. Tad šį tą atradau ir padariau :) Aišku, programa idealiai neveikia :)
Pasirodo, išimtį "aukštyn" permeta throw Išimties apdorojimas atrodo maždaug taip: catch (Exception ex) { ex = new Exception("Klaida"); throw; } http://www.ernestas.info/projects/csharp/TestinePrograma.zip

Komentarai

OK, tau tikrai reikia knygą perskaityti prieš kodinant :)

Niekada negaudyk exceptionų, jei neturi ko veikti juos pagavęs - tiesiog juos praleisk. Exceptionai tam ir sugalvoti, kad būtų lengviau nei grąžinti error kodus - uždėk catch'us Main metode, kurie parodys error message'ą - viskas!

Jei vis dėlto užsinorėjai permesti exceptioną, pvz., turi papildomos informacijos, tai daryti reikia ne taip, kaip tu aprašei. Pirmas dalykas - nemėtyk pliko Exception'o - jei jau prisireikė permesti exceptioną, tai reiškia turi papildomos informacijos, kurią turėtum sudėti į savo custom exception objektą. O pats permetimas tokiu atveju daromas pasinaudojant exception chaininimu: catch(SqlException ex) { throw new TavoExceptionas("Blah", ex) }

Tokiu būdu, pagavęs exceptioną matysi ir tavo ir originalų exceptionus.

Tai tiek norėjau pasakyti :)

Dar kartą dėkingas ;)

Komentuoti