İlk C++ programlama sınıfımdaki bir öğrenciyim ve birden çok özel özel durum sınıfı oluşturmamız gereken bir proje üzerinde çalışıyorum ve daha sonra olay işleyicilerimizden birinde, bunları işlemek için bir try/catch
blok kullanın uygun şekilde.Birden Çok Özel Özel Durum mu Yakalayın? - C++
Soruma ilişkin soru: try/catch
bloğumdaki çoklu özel istisnalarımı nasıl yakalarım? GetMessage()
, istisna açıklamalarım std::string
olarak döndüren özel durum sınıflarımdaki özel bir yöntemdir. Aşağıda tüm ilgili kodu projemden ekledim.
Yardımlarınız için teşekkürler!
deneme/yakalama bloğu
// This is in one of my event handlers, newEnd is a wxTextCtrl
try {
first.ValidateData();
newEndT = first.ComputeEndTime();
*newEnd << newEndT;
}
catch (// don't know what do to here) {
wxMessageBox(_(e.GetMessage()),
_("Something Went Wrong!"),
wxOK | wxICON_INFORMATION, this);;
}
ValidateData() Metodu
void Time::ValidateData()
{
int startHours, startMins, endHours, endMins;
startHours = startTime/MINUTES_TO_HOURS;
startMins = startTime % MINUTES_TO_HOURS;
endHours = endTime/MINUTES_TO_HOURS;
endMins = endTime % MINUTES_TO_HOURS;
if (!(startHours <= HOURS_MAX && startHours >= HOURS_MIN))
throw new HourOutOfRangeException("Beginning Time Hour Out of Range!");
if (!(endHours <= HOURS_MAX && endHours >= HOURS_MIN))
throw new HourOutOfRangeException("Ending Time Hour Out of Range!");
if (!(startMins <= MINUTE_MAX && startMins >= MINUTE_MIN))
throw new MinuteOutOfRangeException("Starting Time Minute Out of Range!");
if (!(endMins <= MINUTE_MAX && endMins >= MINUTE_MIN))
throw new MinuteOutOfRangeException("Ending Time Minute Out of Range!");
if(!(timeDifference <= P_MAX && timeDifference >= P_MIN))
throw new PercentageOutOfRangeException("Percentage Change Out of Range!");
if (!(startTime < endTime))
throw new StartEndException("Start Time Cannot Be Less Than End Time!");
}
Sadece bir Benim özel istisna sınıfları, diğerleri sanal yöntem GetMessage()
sahip ortak bir temel sınıf BaseException
adresinin istisnalar tüm türetin bu bir
class HourOutOfRangeException
{
public:
// param constructor
// initializes message to passed paramater
// preconditions - param will be a string
// postconditions - message will be initialized
// params a string
// no return type
HourOutOfRangeException(string pMessage) : message(pMessage) {}
// GetMessage is getter for var message
// params none
// preconditions - none
// postconditions - none
// returns string
string GetMessage() { return message; }
// destructor
~HourOutOfRangeException() {}
private:
string message;
};
, işaretçileri atmak yeni ihmal etmeyin. – GManNickG