Nem értem a kivételeket még mindig, elmagyarázná valaki? C++.
Több mint egy hete próbálkozok vele de az internetről sem tudtam megtanulni.
Tudom mire van csak nem tudom használni.
Egy leírásból sem sikerült.Pedig szerintem nem nehezebb a tömböktől, sablonoktól vagy a mutatóktól ezeket mind teljesen értem.
Csak a kivételkezelés nem megy.
Honnan tanuljam meg?
Segítsetek valahogy pls mert teljesen ki vagyok tőle idegileg már.
Ezekről van szó:
try
catch
except
throw
Mit nem értesz rajta?
Egy függvényben, osztályban, akármiben ha valami rendellenes esetet akarsz lekezelni, akkor kivételt dobsz a throw paranccsal.
Ezt meg a meghívás helyén lekezeled.
Try blokkba ágyazod azt a részt, ahol a kivétel várható, majd utána catch-el elkapod és lekezeled.
Na mindjárt írok valami egyszerű példát.
Egyszerű példa:
Az Exceptions-nek nyilván nem muszáj ezt a nevet adni, csak ez így szép és logikus, illetve nem muszáj felsorolt (enum) típusnak sem lennie, ez csak kb a legegyszerűbb eset.
Ha szebben szeretnéd kezelni az adott kivételt, ez lehet egy struktúra is, amiben eltárolod az adott hiba paramétereit, és azt kezeled le.
#include <iostream>
using namespace std;
enum Exceptions {NULLAVALNEMOSZTUNK};
double osztas (double a, double b)
{
if (b==0) throw NULLAVALNEMOSZTUNK;
return a/b;
}
int main()
{
double osztando,oszto;
cout<<"Kérem az osztandót: ";
cin>>osztando;
cout<<"Kérem az osztót: ";
cin>>oszto;
try
{
cout<<"Az eredmény: "<<osztas(osztando,oszto)<<endl;
}
catch (Exceptions ex) {if (ex==NULLAVALNEMOSZTUNK) cout<<"0-val nem lehet osztani!"<<endl;}
return 0;
}
:D
Az mondjuk tényleg kemény, ha valaki a sablonokat "teljesen érti" a kivételkezelést meg egyáltalán nem. :D
De semmi nehéz nincs a sablonokban.
Találtam egy weboldalt ahol szépen le volt írva a szintaktikája.
Ha függetlenné szeretném tenni egy osztályt hogy ne csak intet tudjon tárolni hanem stringet is képes legyen lekezelni akkor a sablonokkal ez megoldható.
A sablon példányaival fogom definiálni a konstruktor egy paraméterét.
Nem nagy ügy.
A kivételkezelésről meg az interneten nem találok megfelelő leírást sajnos.
A sablonokat sem a könyvemből értettem meg mert hülyén volt ez kitárgyalva a 24 órás könyvben.
De értem én a kivételkezelést is elméleti szinten de a gyakorlatban nem tudom alkalmazni mert nem értem a szintaktikát.
23:40 es példájában ebben a sorban mi hívódik meg?
if (b==0) throw NULLAVALNEMOSZTUNK; Ez egyenlő ezzel throw 0
Ez mit hív meg: throw 0?
Ebben a sorban mi hívódik meg?
if (b==0) throw NULLAVALNEMOSZTUNK
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!