شما اینجا هستید

میتوان استثناها را با استفاده از دستور throw ایجاد و آنها را با استفاده از try…catch کنترل کرد.

دستور throw

دستور throw یک استثنا ایجاد میکند. هنگامی که استثناء ایجاد میشود، یک عبارت دارای مقدار برای ایجاد مشخص میشود.

throw expression;

 

ممکن است هر عبارتی با هر نوعی ایجاد شود. کدهای زیر چندین عبارت با انواع مختلف ایجاد میکند:

throw "Error2";   // String type

throw 42;         // Number type

throw true;       // Boolean type

throw {toString: function() { return "I'm an object!"; } };

 

میتوان هنگام ایجاد استثنا، یک شی مشخص کرد. سپس میتوان در بلاک catch به ویژگیهای شی اشاره کرد. مثال زیر یک شی به نام myUserException از نوع UserException ایجاد و در عبارت throw استفاده میکند.

// UserException ایجاد یک نوع شی به نام 

function UserException(message) {

  this.message = message;

  this.name = "UserException";

}


// تبدیل استثنا به رشته در هنگامی که به عنوان یک رشته به کار گرفته میشود 

UserException.prototype.toString = function() {

  return this.name + ': "' + this.message + '"';

}


// ایجاد یک نمونه از نوع شی

throw new UserException("Value too high");

 

دستور try…catch

دستور try…catch یک بلاک از دستورات را برای try کردن انتخاب میکند و یک یا چند پاسخ که باید به استثنا ارسال شود را مشخص میکند. اگر یک استثنا ایجاد شود دستور try…catch آن را میگیرد.

دستور try…catch شامل یک بلاک try است که یک یا چند دستور را در بر میگیرد. و همچنین میتواند شامل صفر تا چند بلاک باشد که دستورات درون آن مشخص میکند که اگر استثنایی در بلوک try صورت پذیرد چه کاری باید انجام بگیرد. اگر هر کدام از دستورات درون بلاک try یک استثنا ایجاد کنند، کنترل بلافاصله به بلاک catch میرود. اگر استثنایی در بلوک try ایجاد نشود، بلوک catch از قلم انداخته میشود. بلاک نهایی (finally) بعد از بلاک try و catch و قبل از دستوراتی که در ادامه try…catch نوشته میشود اجرا میگردد.

مثال زیر یک دستور try…catch را به کار میبرد. این مثال یک تابع را که نام ماه را از آرایه ایجاد شده درون تابع بازیابی میکند را صدا میزند.  اگر مقدار با شماره ماه 1 تا 12 مطابق نبود، یک استثنا با مقدار InvalidMonthNo ایجاد میگردد و در بلاک catch مقدار متغیر monthName به unknown تغییر میکند.

function getMonthName(mo) {

  mo = mo - 1; // Adjust month number for array index (1 = Jan, 12 = Dec)

  var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul",

                "Aug","Sep","Oct","Nov","Dec"];

  if (months[mo] != null) {

    return months[mo];

  } else {

    throw "InvalidMonthNo"; //throw keyword is used here

  }

}


try { // statements to try

  monthName = getMonthName(myMonth); // function could throw exception

}

catch (e) {

  monthName = "unknown";

  logMyErrors(e); // pass exception object to error handler

}

 

 

بلاک catch

با استفاده از یک بلاک catch میتوان همه استثنائات را که ممکن است در بلاک try تولید شود، کنترل کرد.

catch (catchID) {

  statements

}

 

بلاک catch یک شناسه مشخصه دارد که مقدار مشخص در عبارت throw را در خود نگه میدارد. با بهر گیری از این شناسه میتوان در مورد استثنای ایجاد شده اطلاعات کسب کرد. هنگامی که برنامه وارد بلاک catch میگردد جاوااسکریپت این شناسه را ایجاد میکند. شناسه فقط در طی بلاک catch دوام دارد. بعد از اینکه اجرای بلاک catch به انتها برسد، شناسه از دسترس خارج میگردد.

برای مثال کد زیر یک استثناء ایجاد میکند. هنگامی که استثنا رخ میدهد، کنترل به بلاک catch انتقال میابد.

try {

  throw "myException"; // generates an exception

}

catch (e) {

  // statements to handle any exceptions

  logMyErrors(e); // pass exception object to error handler

}

 

بلاک finally

بلاک finally شامل دستوراتی برای اجرا پس از اجرای بلاکهای try و catch میباشد، اما قبل از دستوراتی که در ادامه دستورات try…catch می آید اجرا میگردد. استثنا چه ایجاد شود یا نشود به هر صورت بلاک finally اجرا میگردد. اگر یک استثنا ایجاد گردد، حتی اگر بلاک catch استثنا را کنترل نکند، دستورات درون بلاک finally اجرا میگردد.

میتوان برای ساختن اسکریپت مواجه با خطا در هنگام رخ دادن استثنا از بلاک finally استفاده کرد. برای مثال، ممکن است که نیاز به انتشار منبع اسکریپت داشته باشیم. مثال زیر یک فایل را باز میکند و سپس دستورات آن را اجرا میکند ( جاوا اسکریپت سمت سرور به شما اجازه دسترسی به فایلها را میدهد). اگر یک استثنا در هنگام باز شدن فایل رخ بدهد، بلاک finally قبل از اینکه اسکریپت با شکست روبرو شود، فایل را میبندد.

openMyFile();

try {

  writeMyFile(theData); //This may throw a error

} catch(e) { 

  handleError(e); // If we got a error we handle it

} finally {

  closeMyFile(); // always close the resource

}

 

اگر بلاک finally یک مقدار را بازگرداند، این مقدار، بدون در نظر گرفتن عبارات return در بلاکهای try و catch مقدار بازگردانده شده میشود:

function f() {

  try {

    console.log(0);

    throw "bogus";

  } catch(e) {

    console.log(1);

    return true; // تا هنگامی که بلاک finally تمام شوداین عبارت return

                 // به حالت تعلیق در می آید

    console.log(2); // not reachable

  } finally {

    console.log(3);

    return false; // باز نویسی  "return" قبلی

    console.log(4); // دسترس پذیر نیست

  }

  // "return false" الان اجرا میشود 

  console.log(5); // دسترس پذیر نیست

}

f(); // alerts 0, 1, 3; returns false

 

 

بازنویسی مقادیر بازگشتی توسط بلاک finally در اجرای استثنائات یا اجرای دوباره درون بلاک catch اعمال میشود:

function f() {

  try {

    throw "bogus";

  } catch(e) {

    console.log('caught inner "bogus"');

    throw e; // this throw statement is suspended until

             // finally block has completed

  } finally {

    return false; // overwrites the previous "throw"

  }

  // "return false" is executed now

}


try {

  f();

} catch(e) {

  // this is never reached because the throw inside

  // the catch is overwritten

  // by the return in finally

  console.log('caught outer "bogus"');

}


// OUTPUT

// caught inner "bogus"

 

دستورات try…catch تو در تو

میتوان چند دستور try…catch را به صورت تو در تو نوشت. اگر یک دستور try..catch داخلی دارای بلاک catch نباشد، بلاک catch دستورات try…catch بیرونی بررسی میشود.

دیدگاه‌ها

Stendra Avanafil Buy Cialis Symptoms Of Keflex Allergy

Propecia Dizionario http://cialisjh.com - generic 5mg cialis best price Amoxil Sur Buy Cialis Cialis Caracteristicas

quick loans in south carolina quick personal loans online quick loan quick loans no credit check near me quick payday loans wichita ks

quick cash loans tulsa ok quick loan home loans [url=https://evolohelp.ru/ ]quick loan[/url] quick small personal loans quick online loans direct lender

quick online business loans best egg loans/quick quick loan quick loans for small business quick loans bad credit with monthly payments

quick personal loans quick personal loans online [url=https://paydailoanz.com/# ] quick loan[/url] quick small personal loans quick 200 dollar loans

https://paydailoanz.com/# - quick loans

ways to make money online how to make money on the side work from home hobbies that make money make money now instant payout

how to make money online fast make extra money [url=https://make-money-blogs.com/# ] make money[/url] how to make money online from home how much money can i make on social security

https://make-money-blogs.com/# - make money

how to make money online fast how much money can you make on disability work from home make money on the side best ways to make money online

make money fast where did nancy pelosi make her money [url=https://make-money-blogs.com/# ] work from home[/url] how to make money as a kid how did jeffrey epstein make his money

https://make-money-blogs.com/# - make money

ways to make money make money online from home work from home how to make money on the internet make extra money from home

easy ways to make money make money online fast [url=https://make-money-blogs.com/# ] make money[/url] how to make money on amazon how to make money as a kid

https://make-money-blogs.com/# - make money

how to make money online from home how to make money in gta 5 make money make money fast how to make money online

where did nancy pelosi make her money ways to make money fast [url=http://90-95.ru/] make money[/url] make extra money how can i make money

http://vologdaeparhia.ru/ - make money

make money from home how to make money selling drugs work from home how to make money in gta 5 legit ways to make money online

how did george soros make his money make money online from home [url=http://coznanie.ru/] work from home[/url] how to make money on the side how do you make money on youtube

https://pesgene.ru/ - work from home

how to make more money ways to make money fast make money how to make money on instagram ways to make money

how much money do youtubers make make money online free [url=http://spainfoot.ru/] work from home[/url] how to make money on amazon homemade items that make money

http://blogbasket.ru/ - make money

make money now instant payout make extra money from home make money how much money does pewdiepie make how do youtubers make money

make extra money photos imgclick easily make money sharing will friends social free file upload [url=http://goldlamp.ru/] work from home[/url] best way to make money online how to make money with bitcoin

http://letonavsegda.ru/ - work from home

how to make money on youtube videos how to make money as a teen make money how to make money online how to earn money online or gift cards to amazon how to make money from home

how to make money on the internet make extra money from home [url=http://serial-kuhnya.ru/] make money[/url] where did nancy pelosi make her money legit ways to make money online

http://www.thismanagement.ru/ - work from home

instant cash loans for credit under 500 [url=https://www.paydayloansintheusa.com/NH/fremont#]payday loans fremont[/url]
safe online payday loans
https://www.paydayloansintheusa.com/NH/fremont

buy viagra online overnight buy viagra online sweden why does the military buy viagra

buy viagra online without prescriptions buy viagra online from canada can i buy viagra at walmart

cash advance in GA

treating genital warts from hpv wart remover reddit. warts treatment boots facial wart remover boots [url=https://bestwartsremover.com/#]wart removal products[/url] wart on foot child treatment, wart treatment malaysia. xalix wart remover treat warts salicylic acid, wart treatment walgreens. how to treat warts on dogs face, wart on face pics treatment penile warts. wart on newborn face wart treatment near me, best treatment for genital warts uk treating genital warts with liquid nitrogen. viral wart on face treatment, boots warts treatment. best treatment for warts on hands, wart on my face is bleeding treatment warthin tumor. wart treatment lotion wart remover young living, wart treatment in ayurveda patanjali warts on face treatment in hindi. wart on dog eye, warts removal let's face it.
how to treat warts on feet [url=https://www.bms.co.in/intangibility-of-bank-marketing/comment-page-5/#co... - warts removal bangalore[/url] 8573708 best way to treat warts on feet. wart removal medication [url=https://www.bms.co.in/communicating-the-strategic-vision/comment-page-1/... - wart treatment not working[/url] treatment for genital warts in kenya treating genital warts natural remedies.

افزودن دیدگاه جدید

دیدگاه

  • تگ‌های HTML مجاز: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
  • نشانی صفحه‌ها وب و پست الکترونیک بصورت خودکار به پیوند تبدیل می‌شوند.

Plain text

  • تگ‌های HTML مجاز نیستند.
  • نشانی صفحه‌ها وب و پست الکترونیک بصورت خودکار به پیوند تبدیل می‌شوند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
كد امنيتي
این پرسش برای جلوگیری از ارسال اسپمهای اتوماتیک است.