الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Exception Handling

بدأه C++er في 28 سبتمبر 2008 · 2 رد · 695 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

فى الماضى عندما يحدث خطأ داخل احد برامجى كنت استخدم الـ try .. catch بالإضافه للماكرو __FILE__ و __FUNCTION__ و __LINE__ لمعرفة اسم الملف الذى حدث به الخطأ و اسم الداله و رقم السطر.

ففكرت بصنع class لتمثل الـ exception و وضع الماكرو بداخلها و بالتالى سيكون شكل الـ class كالتالى

#ifndef EXCEPTION_H
#define EXCEPTION_H

#include <string>

using namespace std;

class Exception
{
private:
	string m_fileName;
	string m_functionName;
	int	m_lineNumber;

protected:
	string m_msg;

public:
	 Exception(string msg);
	 virtual ~Exception();

	 string getMessage();	 
	 string getFileName();
	 string getFunctionName();
	 int	getLineNumber();
};

#endif  // EXCEPTION_H

بالنسبه للدوال التى تبدأ بـ get فهى Accessor function و الكود الذى يهمنا هو كود المشيد حيث سيكون كالتالى:

Exception::Exception(string msg)
{
   m_msg		  = msg;
   m_fileName	 = __FILE__;
   m_functionName = __FUNCTION__;
   m_LineNumber   = __LINE__;
}

طبعا هذه الـ class لن تعمل كما هو متوقع منها لإنى نسيت شئ هام جدا و هو ان الماكرو سيتم عمل إحلال لإسمه بالقيمه الخاصه به و التى فى حالتنا هذه يأخذها من الـ preprocessor و تكون على التوالى اسم الملف و اسم الداله و رقم السطر و سيكونوا اسم الملف الخاص بهذه الـ class و الداله ستكون Exception::Exception اما رقم السطر سيكون على حسب كتابتى للكود.

بخلاف السابق الـ class ستعمل و لكن ما الهدف منها مادام الأمر يقتصر على متغير string يمكن الإستغناء عنها.

و سؤالى هل يمكن معرفة اسم الملف و الداله و رقم السطر الذى حدث بهم الخطأ اثناء runtime?

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#2

اهلا اخي . . .

اطلع على هذا الموضوع من هنا ستجد فيه تصميم لـ exception classes ربما تجد ماتبحث عنه .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

شكرا جزيلا الرابط مفيد و يشرح ما اريد فعلا

شكرا مرة اخرى

مدونتي: C++ Tips and Tricks

مواضيع مشابهة