ایجاد یک استثناء توسط کاربر

در جاوااسکریپت می‌توان یک استثناء سفارشی ایجاد کرد. استثناء سفارشی، استثنایی است که توسط کاربر تعریف می‌شود و باید از کلاس پایه Error ارث بری کند. به کد زیر توجه کنید :

 1: class DivideByZeroException extends Error
 2: {
 3:     constructor()        
 4:     {
 5:         super();
 6:         this.message = "Attempted to divide by zero...";        
 7:     }
 8: }
 9: 
10: var firstNumber  = 10;
11: var secondNumber = 0;
12: 
13: try
14: {    
15:     if(secondNumber == 0 )
16:     {     
17:         throw new DivideByZeroException();   
18:     }
19:     else
20:     {
21:         result = firstNumber / secondNumber;
22:     }
23: }
24: catch (DivideByZeroException)
25: {
26:     console.log(DivideByZeroException.message);
27: } 
Attempted to divide by zero...

همانطور که در کد بالا و در خط 1 مشاهده می‌کنید، یک کلاس جداگانه که از کلاس پایه Error ارث می‌برد ایجاد کرده و نام آن را DivideByZeroException گذاشته‌ایم. به عنوان یک قرارداد، باید به آخر نام کلاس‌های استثنایی که توسط کاربر تعریف می‌شوند، کلمه Exception اضافه می‌شود. هدف از ایجاد این کلاس هم نمایش پیغام خطایی به کاربر مبنی بر خطای تقسیم عدد بر صفر است. برای اینکه یک پیغام خطای سفارشی هم ایجاد کنیم، در خط 5 سازنده کلاس Error را فراخوانی می‌کنیم. حال به نحوه استفاده از این کلاس می‌پردازیم. در خطوط 10 و 11 دو متغیر تعریف کرده‌ایم که مقدار یکی از آنها 10 و دیگری 0 است. می‌خواهیم متغیر firstNumber را بر secondNumber تقسیم کنیم. یعنی تقسیم یک عدد بر صفر. در داخل بلوک try، تست می‌کنیم که اگر مقدار متغیر secondNumber برابر 0 است یک استثناء تولید شود (خط 17) و چون این شرط برقرار است در نتیجه یک استثناء رخ می‌دهد، چون تقسیم عدد بر صفر بی معنی است. پیغام مربوط به استثناء را با استفاده از خاصیت message که کلاس DivideByZeroException از کلاس Error به ارث برده است در خط 26 نمایش می‌دهیم.