Poikkeuskäsittelijä C++:ssa

Tietokonejutut, pelit ja muu nörtismi; autot, kaasupullot ja muut lelut
SikaMika

Poikkeuskäsittelijä C++:ssa

Viesti 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?
Avatar
nowaysis
Kitisijä
Viestit: 6126
Liittynyt: 26.05.2006 10:01
Paikkakunta: Bunnytown
Viesti:

Re: Poikkeuskäsittelijä C++:ssa

Viesti Kirjoittaja nowaysis »

Nuuh, soodausta *kiihottuu* :oops:
Prepare for the worstest.
MGandhi

Re: Poikkeuskäsittelijä C++:ssa

Viesti 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?
elco

Re: Poikkeuskäsittelijä C++:ssa

Viesti 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.
MGandhi

Re: Poikkeuskäsittelijä C++:ssa

Viesti 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 ->
Vastaa Viestiin