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?
Poikkeuskäsittelijä C++:ssa
Re: Poikkeuskäsittelijä C++:ssa
Mitäs sulla noiden kolmen pisteen tilalla on tuolla kopissa?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?
Re: Poikkeuskäsittelijä C++:ssa
Java-peelo. Siellä on tietty kolme pistettä! Se kun sieppaa kaiken. Paitsi näköjään tämän.MGandhi kirjoitti: Mitäs sulla noiden kolmen pisteen tilalla on tuolla kopissa?
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
Heh... I stand corrected. Mä aloitin koodailuopiskelut joskus C++:lla, mutta en koskaan päässyt virhehallintaan astielco kirjoitti:Java-peelo. Siellä on tietty kolme pistettä! Se kun sieppaa kaiken. Paitsi näköjään tämän.MGandhi kirjoitti: Mitäs sulla noiden kolmen pisteen tilalla on tuolla kopissa?
Poistun tästä keskustelusta ->