Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Exception baze, pomoć

[es] :: .NET :: Exception baze, pomoć

[ Pregleda: 3124 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

west_herc
west_herc

Član broj: 103549
Poruke: 160
*.tel.net.ba.



Profil

icon Exception baze, pomoć20.11.2006. u 06:29 - pre 197 meseci
Jel mi moze netko objasniti kako dahvatam exception baze? Primjerice, za različite tipove grešaka dobijam različite iznimke. E sad, recimo kad imam dva ista Primarna ključa imam neku iznimku tj exception. Ja bih sad umjesto defaultnogupozorenja volio imat to posebno upotorenje u svom MessageBox-u. Hvala svima.
 
Odgovor na temu

colke77
Dragan Colić
Beograd

Član broj: 74309
Poruke: 183
195.252.107.*



+12 Profil

icon Re: Exception baze, pomoć20.11.2006. u 09:32 - pre 197 meseci
Evo primera:

Code:

public bool SaveObject()
        {
            myCommand.CommandType = CommandType.Text;
            myCommand.CommandText = "INSERT INTO Tabela (Kljuc, Podatak) VALUES(123, 122)";

            try { myCommand.ExecuteNonQuery(); }
            catch (DbException e)
            {
                MessageBox.Show(e.Message);
                return false;
            }
            return true;
        }


Ako radis sa MS SQL Server bazom, onda umesto DbException klasu stavi SqlServerException, ako je u pitanju Oracle, onda OracleException, mada ce i ovako raditi.

Na ovaj nacin ce se prikazati vrsta greske koja se javila pri snimanju sloga.
Idemo dalje
 
Odgovor na temu

west_herc
west_herc

Član broj: 103549
Poruke: 160
*.tel.net.ba.



Profil

icon Re: Exception baze, pomoć20.11.2006. u 12:22 - pre 197 meseci
Hvala ti velika. Nego jel imaš kakav link o svemu ovome da malo detaljnije pročitam.
 
Odgovor na temu

colke77
Dragan Colić
Beograd

Član broj: 74309
Poruke: 183
195.252.107.*



+12 Profil

icon Re: Exception baze, pomoć21.11.2006. u 07:08 - pre 197 meseci
MSDN, ukucas Exceptions i to je to.
Idemo dalje
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Exception baze, pomoć21.11.2006. u 11:17 - pre 197 meseci
Samo jedan mali dodatak.

Ovo sto je colke77 napisao radice posao, ali za one koji rade malo vise sa objektima (pogotovo sa tipiziranim DataSet-ovima i TableAdapter) ne bi bilo lose pozivati GetBaseException f-ju. Jer mnoge klase handluju exception-e pa posle bacaju svoje sto posle "gubi" podatak o orginalnoj gresci

Code:

            catch (Exception exp)
            {
                Exception e = exp.GetBaseException();
                if (exp is ConstraintException)
                {
                }
                else if (exp is SqlException)
                {
                }
                ...
            }
 
Odgovor na temu

colke77
Dragan Colić
Beograd

Član broj: 74309
Poruke: 183
195.252.107.*



+12 Profil

icon Re: Exception baze, pomoć21.11.2006. u 11:39 - pre 197 meseci
Slazem se sa tobom, ali do gubitka moze doci kad hvatas izuzetak na najvisem nivou, upravo kroz klasu Exception sto si ti i uradio, a ja sam napomenuo da je najbolje hvatati izuzetak kroz klase koje ga i "bacaju". U MSDN-u mozes videti za svaku metodu (funkciju, naredbu, ...) koji tip izuzetka "baca", pa je i najbolje hvatati izuzetak tog tipa kako ne bi doslo do gubljenja dragocenih informacija.
Ukoliko si siguran da znas sta je izazvalo izuzetak, najbolje je izbaciti custom izuzetak, tj. izbacis izuzetak koji si ti napravio.
Idemo dalje
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Exception baze, pomoć21.11.2006. u 12:03 - pre 197 meseci
colke77, nisam ja tebe hteo da ispravljam nego samo da dopunim, zato sam namerno stavio u zagradi sta mislim (TabelAdapter evo opet ) . Ako si radio sa njima videces da se neki exception-i hvataju unutar TableAdapter-a i dalje prosledjuju sa novim exception-om. Ja sam u pocetku zbog toga stalno isao u debug mode i skidao one generisane atribute
[System.Diagnostics.DebuggerNonUserCodeAttribute()] da bi mogao da vidim sta se desava, sto je bila cista glupost. Zato je mozda bitno ovo naglasiti, pogotovo novim u .NET, jer mogu da previde ovo.
 
Odgovor na temu

west_herc
west_herc

Član broj: 103549
Poruke: 160
*.tel.net.ba.



Profil

icon Re: Exception baze, pomoć21.11.2006. u 20:57 - pre 197 meseci
Okje to, ali meni ovo jednostavno ne radi. Uopće mi ne javlja ikakvu grešku tj upozorenje. Ja sam savio


if (....)
{
MessageBix(...);
}

ali en pokazuje mi ovaj Message Box
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Exception baze, pomoć21.11.2006. u 21:15 - pre 197 meseci
Postuj ceo code da bi videli sto ne radi.
 
Odgovor na temu

colke77
Dragan Colić
Beograd

Član broj: 74309
Poruke: 183
195.252.107.*



+12 Profil

icon Re: Exception baze, pomoć22.11.2006. u 07:18 - pre 197 meseci
Pa koristi:
try
{
}
Catch (Exception exc)
{
}
Idemo dalje
 
Odgovor na temu

west_herc
west_herc

Član broj: 103549
Poruke: 160
*.tel.net.ba.



Profil

icon Re: Exception baze, pomoć22.11.2006. u 17:05 - pre 197 meseci
E ovako, da tetaljno objasnim situaciju, jer ipak sam ja početnik. Ali naravno zato i postoji ovaj forum.

Imam ovaj kod:

try
{

testTableAdapter1.InsertQuery(nesto1, nesto2, nesto3);

}
catch (Exception s)
{
MessageBox.Show(s.Message);
}


Nakon ovog, kad unesem PK koji već postoji, javi mi se ova poruka:

VIOLATON OF PRIMARY KEY CONSTRAINT NESTO1. Cannot insert duplicate key in object "dbo.tablica". The statement has been terminated.

Isto tako kad imam ovaj kod, koji mi je dao NEGYXO:

catch (SqlException s)
{
Exception r = s.GetBaseException();
if (s is ConstraintException)
{
MessageBox.Show("Narusen je integritet PK");
}
}


javi mi ove warninge:

Warning 1 The given expression is never of the provided ('System.Data.ConstraintException') type
Warning 2 Unreachable code detected

Ali sad kad pokrenem ne javlja mi nikakvo upozorenje.

---------------------------------------------------

E SAD, POSTAVLJA SE PITANJE ŠTA BIH JA ŽELIO??

JA BIH ŽELIO DA UMESTO OVIH DEFAULTNIH UPOZORENJA KOJE MI DAJE SAM VISUAL STUDIO, DA PIŠE SAMO ONO ŠTO SAM JA NAPIAO. PRIMJERICE AKO UNESEM ISTI PK DA MI JAVI DA JE PK DUPLIKAT, A AKO BUDE NEKA DRUGA GREŠKA DA MI JAVI DA JE DRUGA GREŠKA. TJ. DA RASPOZNA GREŠKE.
DO SAD MI JE BILO U MESSAGEBOX-U, ONO ŠTO JA NAPIŠEM + ONO OD VISUAL STUDIA

NEZNAM DA LI IMA VEZE ŠTO JA RADIM SA DATASETOM A NE SA BASE OBJECTOM.

ETO GA DRUGOVI.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Exception baze, pomoć23.11.2006. u 00:49 - pre 197 meseci
Warning-se dobijas zato sto is operator koristis nad objektom koji nikad ne moze biti to sto ispitujes, doduse sad tek vidim da se meni potkrala greska u onom primeru, umesto
Code:

if (exp is ConstraintException)

treba
Code:

if (e is ConstraintException)

ali to sad vec nije toliko bitno jer tebi dolazi greska sa SQL Servera. ConstraintException ces dobiti ako imas neki key nad DataTable-om, zato ti savetujem da dodelis jedan. Ali ne bi bilo lose da handlujes exception-e bez obzira na izvor tj. ko ih salje. Evo, probaj ovo posto vidim da radis sa SQL Serverom
Code:

            try
            {
                testTableAdapter1.InsertQuery(nesto1, nesto2, nesto3);
            }
            catch (Exception exp)
            {                
                Exception e = exp.GetBaseException();

                if (e is ConstraintException)
                {
                    MessageBox.Show(ConstraintMessage);
                }
                else if (e is SqlException && ((SqlException)e).Number == 2627)
                {
                    MessageBox.Show(ConstraintMessage);
                }
                else
                {
                    MessageBox.Show(e.Message);
                }                
            }


Ako te interesuju detalji o SqlException greskama (Number property) otkucaj na SQL Serveru
Code:

SELECT * FROM master.dbo.sysmessages WHERE error = 2627


 
Odgovor na temu

west_herc
west_herc

Član broj: 103549
Poruke: 160
*.tel.net.ba.



Profil

icon Re: Exception baze, pomoć23.11.2006. u 07:00 - pre 197 meseci
OK je sad. Nema više unreachable code. Sad mi se javlja drugi problem

MessageBox.Show(ConstraintMessage);

Uključio sam sve namespacove, ali nemam nigdje ConstraintMessage.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Exception baze, pomoć23.11.2006. u 07:41 - pre 197 meseci
ConstraintMessage je string, nisam to napomenuo ali mislim da je bilo ocigledno. Sta ce se napisati u MesaggeBox-u ti odredjujes.
 
Odgovor na temu

west_herc
west_herc

Član broj: 103549
Poruke: 160
*.tel.net.ba.



Profil

icon Re: Exception baze, pomoć23.11.2006. u 08:37 - pre 197 meseci
Kasnije sam i ja nadošao, nije mi bilo jasno u čem je for. Gledam ja šta je sad ovo.


Hvala ti
 
Odgovor na temu

west_herc
west_herc

Član broj: 103549
Poruke: 160
*.tel.net.ba.



Profil

icon Re: Exception baze, pomoć24.11.2006. u 07:41 - pre 197 meseci
Hm, opet imam jednu primjedbu. Naime, neće uopće da mi izbaci messagebox sa porukom koju sam napisao. Ne učini ništa. Tj kad sam unio isti PK ili pogriješio format podatka i idem na spremi, ali nema nikakva upozorenja, jednostavno mogu kliktat na spremi a ništa se ne događa.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: Exception baze, pomoć25.11.2006. u 12:27 - pre 197 meseci
Pa sto ne debugujes? Tako ces najbolje videti sta ne valja. Ovako mozemo samo da pogadjamo.
 
Odgovor na temu

[es] :: .NET :: Exception baze, pomoć

[ Pregleda: 3124 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.