خوش برگشتید.
تو این ویدئو می‌خوایم نگاهی بیندازیم به کلمه کلیدی finally.
بعدتر هم بیشتر در مورد استثناها صحبت می‌کنیم.
پس نگران نباشید.
تازه داشتیم نگاهی می‌انداختیم به کلمه کلیدی ساده exception.
اما حالا بیایید نگاهی بیندازیم به کلمه کلیدی finally.
کلمه کلیدی finally به شما این امکان رو می‌ده که در کنار try و catch، کدی رو اجرا کنید
فرقی نمی‌کنه که کد داخل try کار کرده باشه یا نه.
اگر کار کرده باشه، finally فراخوانی می‌شه.
اگر کار نکرده باشه، finally فراخوانی می‌شه.
پس به طور کلی، برای مواقعی عالیه که مثلا می‌خواید یک استریم دانلود رو ببندید،
یا می‌خواید کد رو نهایی کنید، یا می‌خواید بعضی از اشیاء رو پاکسازی کنید.
مثلا اگر دارید چیزی رو از وب دانلود می‌کنید، باید یک استریم دانلود باز کنید،
دانلود رو انجام بدید و بعد باید اون استریم داده رو ببندید.
نه استریم دانلود، بلکه استریم داده.
بعد باید اون رو ببندید.
در غیر این صورت ممکنه با انواع خطاها مواجه بشید.
بلوک try مثلا سعی می‌کنه استریم رو باز کنه و بعد سعی می‌کنه چیزی رو دانلود کنه،
اما فرض کنید وسط کار مشکلی پیش بیاد.
در این صورت نمی‌خواید که استریم داده‌تون همچنان باز بمونه.
می‌خواید مطمئن بشید که بعد از اجرای اون بخش کد، بسته می‌شه.
اینجاست که بلوک finally به کار میاد.
و این فقط یک مثال بود.
اما بیاید نگاهی بیندازیم به کلمه کلیدی finally تو کدمون.
می‌بینید که در کنار try و catch استفاده می‌شه.
می‌شه گفت finally مثل else تو if و else if و else هست.
ما این کلمه کلیدی finally رو داریم که در هر حال فراخوانی می‌شه.
نه مثل else که فقط اگر هیچ چیز دیگه‌ای اتفاق نیفتاده باشه فراخوانی می‌شه.
در اینجا بلوک finally در هر حال فراخوانی می‌شه.
پس بیاید اینجا بنویسیم: این همیشه اجرا می‌شه.
خوب.
این کجا مفیده؟
همونطور که گفتم، برای پاکسازی، نهایی کردن، یا به طور کلی پایان دادن به اتصال‌ها مفیده.
ایده‌آل برای پاکسازی منابع مثل بستن استریم‌های فایل یا اتصال‌های دیتابیس.
خوب، حالا بیاید کد رو اجرا کنیم و ببینیم چی می‌شه.
می‌گیم لطفا یک عدد وارد کنید.
بیاید یک عدد وارد کنیم.
می‌گه: این همیشه اجرا می‌شه.
خوب، دوباره اجرا می‌کنیم.
این بار بیاید یک خطا ایجاد کنیم.
می‌گه: خطا، تلاش برای تقسیم بر صفر.
بعد می‌گه: این همیشه اجرا می‌شه و نتیجه صفره.
حالا بیاید یک خطای دیگه ایجاد کنیم.
این یکی رو با وارد کردن نوع اشتباه ایجاد می‌کنیم.
خوب، خطا.
رشته ورودی f در فرمت صحیح نبود و باز هم می‌گه: این همیشه اجرا می‌شه.
می‌بینید که بلوک finally در هر حال اجرا می‌شه.
این موضوع وقتی با دیتابیس‌ها یا استریم‌ها یا استریم‌های فایل کار می‌کنید خیلی مهمه،
مثلا وقتی دارید داده دانلود می‌کنید یا حتی دارید چیزی رو از فلش می‌خوانید.
حتی وقتی دارید داده‌ای رو از هارد دیسک می‌خوانید، ممکنه مشکلی پیش بیاد.
مثلا هارد دیسک خراب بشه
یا اتصال به فلش قطع بشه، یا خود فلش خراب بشه.
در هر کدوم از این موارد،
نمی‌خواید که برنامه‌تون کرش کنه.
فرض کنید دارید با گوشی‌تون کار می‌کنید و دارید عکس می‌گیرید.
حین عکس گرفتن، ناگهان کامپیوتر یا گوشی‌تون کاملا کرش می‌کنه.
هیچ چیز کار نمی‌کنه چون به هر دلیلی نتونست عکس رو روی دستگاه ذخیره کنه.
در چنین مواقعی می‌خواید که مکانیزم‌های ایمنی داشته باشید.
و اینجاست که try، catch و finally خیلی مفیدند.
خوب، حالا دیدیم که چطور کار می‌کنه.
حالا بیاید نگاهی بیندازیم به ایجاد استثناهای خودمون.
پس می‌بینمتون تو ویدئوی بعدی. ---