Hej!
Opiszę krótko problem.
Mam sobie funkcje a która wylicza sobie coś tam, ale nie może tego zrobić, jeżeli zmienna x będzie wynosiła 0.
Jest sobie też druga funkcja y, która wcześniej sprawdza czy ta zmienna jest równa zeru czy też nie.
No i tutaj nasuwa się pytanie - Czy da się zakończyć działanie programu w momencie, gdy funkcja y zwróci wartość zmiennej x=0?
Wiem, że istnieje coś takiego jak 'break' ale to działa tylko na pętlach i 'switch()'.
Jeśli jest to pytanie zbyt głupie to przepraszam, ale wolałem się zapytać, aby wiedzieć na przyszłość.
0
1
#include <cstdlib>
exit(EXIT_FAILURE);
1
Możesz użyć assert
lub exit
, jednak jeśli jest to zdarzenie wyjątkowe możesz użyć (nomen omen) wyjątku.
Przykłady:
#include <cassert>
#include <cstdio>
#include <exception>
void whit_assert(int a) {
assert(a != 0);
puts("A nie jest zerem");
}
void with_exit(int a) {
if (a == 0) exit(1);
puts("A nie jest zerem");
}
class IsZeroException: public std::exception {
virtual const char* what() const throw() {
return "Niespodziewane zero";
}
}
void with_exception(int a) throw(IsZeroException) {
if (a == 0) throw IsZeroException{};
puts("A nie jest zerem");
}
Każde z tych rozwiązań jednak ma swoje wady.