Sivu 1/1

Poikkeuskäsittelijä C++:ssa

Lähetetty: 20.09.2006 14:56
Kirjoittaja SikaMika
Kokeillaan nyt sitten teidän hoksottimianne. Kokeilin tätä jo postata eräälle nörttifoorumille, mutta ei mulla ole vielä oikeutta moiseen toimenpiteeseen.

Eli homma on ihan simppeli: haluan ympätä poikkeuskäsittelijän C++-kieliseen metodiini.

Metodin tehtävänä on avata tietyllä tiedostopäätteellä varustetut kuvat. Yrittäessään avata muilla päätteillä varustettuja kuvia ohjelma menee polvilleen ja laskee alleen. Tarkoituksena olisi siis lisätä metodille poikkeuskäsittelijä, joka sieppaa tuon tiedostopäätevirheen aiheuttaman poikkeuksen (ja samalla kaikki muutkin poikkeukset) sallien ohjelman jatkamisen normaalisti virheestä eteenpäin. Ei siis mitään ihmeellistä. Ohessa metodini koodi:

void __fastcall TMainForm::avaaClick(TObject *Sender){
try{
if(OpenPictureDialog->Execute()){
TChild *child = new TChild(this); child->Image->Picture->LoadFromFile(OpenPictureDialog->FileName);
child->ClientWidth = child->Image->Picture->Width;
child->ClientHeight = child->Image->Picture->Height;
child->Caption = ExtractFileName(OpenPictureDialog->FileName);
child->Show(); // optionaalinen
}
}
catch(...) {
Application->MessageBox("U fucked up", "Message", MB_OK);
}
}


Ongelmana on se, että mitään poikkeuksia ei siepata, vaan ohjelma kaatuu edelleen heti, kun se yrittää avata sopimattoman kuvan.

Mikä käsittelijässäni on vikana? Kuinka sen saa toimimaan?

Re: Poikkeuskäsittelijä C++:ssa

Lähetetty: 20.09.2006 14:57
Kirjoittaja nowaysis
Nuuh, soodausta *kiihottuu* :oops:

Re: Poikkeuskäsittelijä C++:ssa

Lähetetty: 16.11.2006 13:45
Kirjoittaja MGandhi
SikaMika kirjoitti:
catch(...) {

Ongelmana on se, että mitään poikkeuksia ei siepata, vaan ohjelma kaatuu edelleen heti, kun se yrittää avata sopimattoman kuvan.

Mikä käsittelijässäni on vikana? Kuinka sen saa toimimaan?
Mitäs sulla noiden kolmen pisteen tilalla on tuolla kopissa?

Re: Poikkeuskäsittelijä C++:ssa

Lähetetty: 16.11.2006 13:57
Kirjoittaja elco
MGandhi kirjoitti: Mitäs sulla noiden kolmen pisteen tilalla on tuolla kopissa?
Java-peelo. Siellä on tietty kolme pistettä! Se kun sieppaa kaiken. Paitsi näköjään tämän.

Kun täällä ei varsinaisia Asiantuntjioiden kommentteja vilise niin epäilen homman jotenkin kärjistyvän ikkunointiframeworkiin. Tuo poikkeus siis tapahtunee jossain eventtijonon tuolla puolen ja oma koodi ei saa sitä kiinni. Jos poikkeuksia välttämättä haluaa käyttää niin voisi ehkä kokeilla Bill-poikkeuksia (SEH) standardin sijaan.

En minä tiedä. Joskus 1900-luvulla edellisen kerran.

Re: Poikkeuskäsittelijä C++:ssa

Lähetetty: 17.11.2006 10:39
Kirjoittaja MGandhi
elco kirjoitti:
MGandhi kirjoitti: Mitäs sulla noiden kolmen pisteen tilalla on tuolla kopissa?
Java-peelo. Siellä on tietty kolme pistettä! Se kun sieppaa kaiken. Paitsi näköjään tämän.
Heh... I stand corrected. Mä aloitin koodailuopiskelut joskus C++:lla, mutta en koskaan päässyt virhehallintaan asti :)

Poistun tästä keskustelusta ->