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:
- Tai antra mano programa ant C#.
- Programa nerimta – skirta mokymosi tikslais.
- Ir aš iki išimčių apdorojimo (exception-handling) dar nepriskaičiau
Ž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

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