Ich denke über Ausnahmen in C++Werden Ausnahmen vom Prozessor unterstützt?
Werden sie von Prozessor unterstützt? A oder B Idee ist schneller?
Idea A = Grifffehler durch
Idea B werfen = Fehler handhaben, indem bestimmten Wert zurückkehr
A:
int divide(int a, int b);
void sth(){
try
{
int ret = divide(10,0);
}
catch (const std::invalid_argument& e)
{
std::cout << e.what() << std::endl;
}
}
int divide(int a, int b){
if(b == 0)
throw std::invalid_argument("B = 0 ?!");
return a/b;
}
B)
int divide(int a, int b);
void sth(){
int ret = divide(10,0); // we want to catch error as above, don't worry about result
if(ret == -1)
std::cout << "Divide by 0!" << std::endl;
else if(ret == -2)
std::cout << "Other error" << std::endl;
}
int divide(int a, int b){
if(b == 0)
return -1;
return a/b;
}
Dies ist ein heißes Thema, Menschen haben starke Ansichten für beide Seiten des Arguments. Vorsicht vor voreingenommenen Antworten. –
B ist offensichtlich nicht praktisch - warum würde -1/1 einen Fehler zurückgeben? Und keiner spricht Ihre Überschrift an. –
@latedeveloper Sie haben Recht, aber ich möchte nur Idee .. Wo Rückkehr ist entgegengesetzt zu werfen, bitte konzentrieren Sie sich auf die Idee nicht auf diesem bestimmten Beispiel, davon ausgehen, dass wir nur 'dividieren (x, 0)' - Fehler nicht zu fangen 'divide (-1,1)' - Ich sollte struct zurückgeben, aber das ist nicht das Problem dieses Themas –