C++ İstisnaları


C++ İstisnaları

C++ kodunu yürütürken farklı hatalar oluşabilir: programcı tarafından yapılan kodlama hataları, yanlış girişten kaynaklanan hatalar veya diğer öngörülemeyen şeyler.

Bir hata oluştuğunda, C++ normalde durur ve bir hata mesajı oluşturur. Bunun teknik terimi şudur: C++ bir istisna atar (hata atar).


C++ dene ve yakala

C++'da özel durum işleme üç anahtar kelimeden oluşur: try, throwve catch:

İfade try, yürütülürken hatalara karşı test edilecek bir kod bloğu tanımlamanıza izin verir.

Anahtar throwkelime, bir sorun algılandığında özel bir hata oluşturmamıza izin veren bir istisna atar.

Deyim catch, try bloğunda bir hata meydana gelirse yürütülecek bir kod bloğu tanımlamanıza izin verir.

ve anahtar sözcükleri çiftler halinde gelir try:catch

Örnek

try {
  // Block of code to try
  throw exception; // Throw an exception when a problem arise
}
catch () {
  // Block of code to handle errors
}

Aşağıdaki örneği göz önünde bulundurun:

Örnek

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw (age);
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Age is: " << myNum;
}

Örnek açıklama

tryBazı kodları test etmek için bloğu kullanırız: ageDeğişken değerinden küçükse 18, throwbir istisna yaparız ve onu bloğumuzda ele alırız catch.

Blokta hatayı yakalar ve bu catchkonuda bir şeyler yaparız. İfade catch bir parametre alır : bizim örneğimizde int( ) değişkenini kullanıyoruz (çünkü ( ) bloğuna bir tür myNumistisnası atıyoruz ), değerini çıktılamak için .inttryageage

Herhangi bir hata oluşmazsa (örneğin if yerine ise age, yani 18'den büyük olacaktır), blok atlanır:2015catch

Örnek

int age = 20;

throwAnahtar sözcüğü, düzenleme amacıyla özel bir hata numarası/kodu gibi bir referans numarası çıkarmak için de kullanabilirsiniz :

Örnek

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (int myNum) {
  cout << "Access denied - You must be at least 18 years old.\n";
  cout << "Error number: " << myNum;
}

Her Türlü İstisnayı İşleyin (...)

Blokta kullanılan throw türü bilmiyorsanız, blok içinde her türlü istisnayı işleyecek olan try"üç nokta" sözdizimini ( ...) kullanabilirsiniz:catch

Örnek

try {
  int age = 15;
  if (age >= 18) {
    cout << "Access granted - you are old enough.";
  } else {
    throw 505;
  }
}
catch (...) {
  cout << "Access denied - You must be at least 18 years old.\n";
}