std::logic error (tsz. std::logic errors)
std::logic_error
a C++ Standard Library egyik kivétel osztálya, amely a programozási hibák kezelésére szolgál. Ez egy std::exception
leszármazott, és jellemzően olyan hibákra használják, amelyeket a program futása előtt el lehetett volna kerülni.
std::exception
└── std::logic_error
├── std::invalid_argument
├── std::domain_error
├── std::length_error
└── std::out_of_range
std::logic_error
-t?Akkor, amikor a program hibája logikai problémából fakad, pl.:
std::logic_error(const std::string& what_arg);
#include <iostream>
#include <stdexcept>
int divide(int a, int b) {
if (b == 0) {
throw std::logic_error("Division by zero is not allowed");
}
return a / b;
}
int main() {
try {
std::cout << divide(10, 0) << std::endl;
} catch (const std::logic_error& e) {
std::cerr << "Caught logic_error: " << e.what() << std::endl;
}
return 0;
}
Típus | Mikor használd? |
---|---|
std::invalid_argument
|
Ha egy függvény nem megfelelő paramétert kap |
std::domain_error
|
Ha egy érték kívül esik az érvényes tartományon |
std::length_error
|
Ha pl. egy konténer túl nagy |
std::out_of_range
|
Ha pl. egy index túlmutat a vektor méretén |
A std::logic_error
-t általában akkor dobják, amikor a hiba nem futásidőben derül ki a bemenettől függően, hanem egyértelműen programozási hiba. Például:
std::vector<int> v(3);
v.at(5); // std::out_of_range -> logic_error leszármazott