Giriş
Bu sınıf içine string alabilen bir constructor metoduna sahip değil.
Bu yüzden
1. std::logic_error (yukarıdaki şekilde logic_failure olarak yanlış gösterilmiş) veya
2. std::runtime_error sınıfları veya
3. bunlarda türeyen bir sınıfı kullanmak daha uygun olur.
constructor
Şöyle yaparız.
Bu sınıf içine string alabilen bir constructor metoduna sahip değil.
Bu yüzden
1. std::logic_error (yukarıdaki şekilde logic_failure olarak yanlış gösterilmiş) veya
2. std::runtime_error sınıfları veya
3. bunlarda türeyen bir sınıfı kullanmak daha uygun olur.
constructor
Şöyle yaparız.
void MyClass::function() noexcept(false) {
// ...
if (errorCondition) {
throw std::exception("Error: empty frame");
}
}
what metodu
İmzası şöyle. C++11'den sonra noexcept olarak kullanılmaya başlandı.
Kalıtım
Şöyle yaparız.
virtual const char *what() const noexcept
Örnek
Şöyle yaparız
#include <iostream>
class RenterLimitException : public std::exception {
public:
const char * what() const noexcept override {
return "No available copies.";
}
};
int main() {
try {
throw RenterLimitException();
} catch (const std::exception& myCustomException) {
std::cout << myCustomException.what() << std::endl;
}
}
Şöyle yaparız.
class divide_error : public std::exception {
const char* what() const {
return "division by 0";
}
};
Hiç yorum yok:
Yorum Gönder