بسم الله الرحمن الرحيم
********
" اللهم علمنا ما ينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم "
------------------------------------------------------------------

تكلمنا فى دروس سابقة عن FUNCTIONS وكيفية كتابتها وتعرفنا على
الباراميترات PARAMETERS ووضحناها ثم وضحنا العبارة RETURN
وفصلنا فيها وضحنا اذا ما كانت الدالة FUNCTION ترجع قيمة RETURN VALUE
او لا VOID

كود HTML:
    <script type="text/javascript">
        function  aboutYou(yourName,yorAge,yourEducation,yorAddress)
        {
            
            if(yourName==""||yorAge==''||yourEducation==""||yorAddress=="")
            {
                document.write( "انت تركت احد الحقول فارغة ");
                
            }
            else{
          
             document.write("<h3 dir='rtl'>شكرا لك تفاصيلك هى :</h3>");
             document.write("<div>Your name :   "+yourName+"<br />"+"Your age  :   "
             +yorAge+"<br />"+"Education :   "+yourEducation+"<br />"+"Address :  "
             +yorAddress+"    <br /></div>");
               }
        }
        function showDetails(){
        aboutYou(prompt("ادخل اسمك",""),
        prompt("ادخل عمرك",""),
        prompt("ادخل مؤهلك الدراسى",""),
        prompt("ادخل عنوانك",""));
        }
        showDetails();
  
    </script>
سنتكلم اليوم باذن الله تعالى عن موضوع مهم جدا الا وهو الاخطاء ERRORS
دعنا نفصل فى الاخطاء بشى بسيط لتوضح الصورة
تنقسم الاخطاء فى البرمجة عموما الى منطقية LOGICAL ERRORS واخطاء
فى بنية اللغة او نحوية SYNTAX ERROR


اولا فى تراكيب اللغة SYNTAX ERROR
==========================
تظهر هذه الاخطاء عند كتابة بعض الجمل فى اللغة بصورة خاطئة غير المعرفة
فى اللغة مثل كتابة FUNCTION هكذا FANCTION او IF من غير الاقواس ()
ولا اقصد الاقواس {} لان هذه يمكن الاستغناء عنها فيما يسمى ب COLIN IF او اف المختصرة

لاحظ
كود HTML:
<script type="text/javascript">
var x=10;
if (x!=0)
alert(x);
/*هذه هى اف المحتصرة 
حيث انها تعتبر ما ياتى بعدها مباشرة ضمنها اى ضمن بنيتها 
وهى تنفذ السطر الذى بعدها مباشرة فقط 
اما ما بعد ذلك فلا يعتبر من ضمن عبارة اف 
*/ 
var y = "zaizo";
if(y=="max")
alert("no");
document.write(y);
/* لاحظ هنا انه سيتم طباعة المتغير y 
وهضا يعنى انه if تاخد  السطر الذى بعدها مباشرة 
وتتجاهل ما بعدها اى لا تعتبره ضمن ال block 
*/
</script >
كذلك if else و else if
كذلك تحدث الاخطاء من هذا النوع عند عدم كتابة ؛ او semicolon
ةتحدث ايطا عندما تكون الدالة function ترجع قيمة ولا يوجد متغير
يستقبل هذه القيمة وتعتبر هذه الاخطاء سهلة الاكتشاف والمعالجة


الاخطاء المنطقية logical errors
=======================
وتحدث هذة الاخطاء عادة اثناء الربط linking او اثناء التشغيل Runtime
او طلب ملف والملف غير موجود او الذهاب الى صفحة غير موجودة على السيرفر
والاخيرة تسبب انهيار البرنامج او السكربت لانها تعتبر fatal error
اى خطا قاتل وتعتبر هذه الاخطاء صعبة الاكتشاف


الاخطاء فى java script
================
كما سبق اون ذكرنا الاخطاء فى البرمجة عامة كلها تاخد نفس
الاتجاة الا ان فى لغات برمجة ال web تحدث بالاضافة الى ما سبق
ان تكون هناك ارسال قيم من المستخدم غير مرغوب فيها او اتناءال response
من ال server قد يكون اخطى ترجمة بعض الاكواد وسنتعرف على ذلك ان شاء الله
عندما نصل الى ajax فى دروس متقدمة


try & catch and throw
====================
تستخدم هذه العبارات فى الاكواد التى تحتمل ان يكون بها خطا
مما يساعد على اكتشافها وتصحيحها ان وجدت


الصيغة العامة للعبارات
==============
try وهى تسمح لك بكتابة بلوكات من الاكواد التى تريد ان تكتشف او تتواقع ان
يحدث بها خطاء catch وتعمل على اصطياد او اكتشاف الخطاء الممر فى العبارة
try ان حدث وكان هناك خطاء اما throw تمكنك من اظهار رسائل خطا انت تريد
ان تظهر للمستخدم وتمكنك من التحكم فى بلوكاتك

كود HTML:
<script type="text/javascript">
try{
//statements
throw ;
}
catch(error)
{
//statments
throw ;
}
</script>
جرب ان تعمل {كذا} امسك الخطا( كذا /*وهنا يمكن تحديد الاخطاء التى تريد ان تمسك بها*/ ) { افعل كذا ؛ }
وفى كلا try او catch يمكن استخدام throw

كود HTML:
<script type="text/javascript">
function getError()
{
try
  {
  adddlert("Welcome guest!"); // الخطاء هنا 
  }
catch(err)
  {
  document.write("<div dir='rtl'>"+"<b>"
  +"يوجد لديك خطاء هنا "+"<br />وصف الخطأ : "+err.message+"<br />"+"ارجع الى اكوادك "
  );
  }
}
getError()
</script>
لاحظ فى الكود السابق اننا تعمدنا ان نحدث خطأ لاختبار العبارات السابقة

ناتى ل throw
الصيغة العامة لها
============
throw exception
والخطا المتوقع يمكن ان يكون object او String او Number او Boolean

كود HTML:
<script type="text/javascript">
function myFunction()
{
try
  {
  var x = prompt("ادخل اى رقم هنا ","")
  if (x=="") throw "فارغ";
  if(isNaN(x)) throw "ليس رقم";
  if(x==null) throw "null";
  }
catch(err)
  {
  document.write(err);
  }
}
myFunction();
</script>
الى هنا نختم موضوعنا عن الاخطاء
مع لقاء اخر فى احداث الجافا سكربت event

=================================
الحمد لله رب العالمين واشهد ان لا اله الا الله
وان محمد رسول الله