26 Ocak 2017 Perşembe

std::exception Sınıfı

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.
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ı.
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;
    }
}
Kalıtım
Şöyle yaparız.
class divide_error : public std::exception {
  const char* what() const {
    return "division by 0";
  }
};

Hiç yorum yok:

Yorum Gönder