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
, throw
ve catch
:
İfade try
, yürütülürken hatalara karşı test edilecek bir kod bloğu tanımlamanıza izin verir.
Anahtar throw
kelime, 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
try
Bazı kodları test etmek için bloğu kullanırız: age
Değişken değerinden küçükse 18
, throw
bir istisna yaparız ve onu bloğumuzda ele alırız catch
.
Blokta hatayı yakalar ve bu catch
konuda 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 myNum
istisnası atıyoruz ), değerini çıktılamak için .int
try
age
age
Herhangi bir hata oluşmazsa (örneğin if yerine ise age
, yani 18'den büyük olacaktır), blok atlanır:20
15
catch
Örnek
int age = 20;
throw
Anahtar 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";
}