Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, turiu porą klausimėlių iš exception handling'o:

  • Kodėl po funkcijos apibrėžimo reikia rašyti
    throw (runtime_error)


  • catch bloke
    catch (runtime_error &e)

    tai tas runtime_error yra kaip tipas?

  • kuo skiriasi <exception> ir <stdexcept> bibliotekos?

 

#include <iostream>
#include <stdexcept>
using namespace std;

void funcion() throw ( runtime_error )
{
   throw runtime_error( "runtime_error in function" );
}
int main ()
{
   try
   {
       why();
   }
   catch(runtime_error &e)
   {
       cout<<e.what();
   }
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

[*]Kodėl po funkcijos apibrėžimo reikia rašyti

throw (runtime_error)

Nebūtina ir geriau išvis nerašyti. užrašas

void funkcija() throw(exception_tipas)

nurodo kad funckija gali grąžinti tik 'exception_tipas' tipo exception

 

catch bloke

catch (runtime_error &e)

tai tas runtime_error yra kaip tipas?

Taip. Galima gaudyti kelių tipų exception, pvz

void fx()
{
throw runtime_error( "runtime_error in function" );
 // arba
// throw 10;
}
// ...
try{
fx();
}catch(int e)
{
// ...
}
catch(runtime_error &e)
{
// ...
}
catch(...) // nezinomo tipo exception
{

}

Redagavo rimcx
Nuoroda į pranešimą
Dalintis kituose puslapiuose

  • kuo skiriasi <exception> ir <stdexcept> bibliotekos?

 

Nesunku nueiti ir pasižiūrėti. Nors nedirbu su C++, kiek suprantu, <exception> suteikia standartinį exception tipą bei naudingas funkcijas, o <stdexcept> - standartinius konkrečius exceptionus (kaip out-of-range, ir pan.)

 

http://en.cppreference.com/w/cpp/header/stdexcept

http://en.cppreference.com/w/cpp/header/exception

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...