Menu
6.3 Try-Catch-Finally দিয়ে এরর হ্যান্ডলিং
জাভাস্ক্রিপ্ট এ “এরর হ্যান্ডেলিং” এর জন্য আমরা ট্রাই-ক্যাচ-ফাইনালি ব্লক ব্যবহার করি। এটি প্রকৃতপক্ষে একটি এক্সেপশন হ্যান্ডেলিং এর একটি রাস্তা। প্রথমে আসুন এই ব্লকগুলোর কাজ সম্পর্কে কিছু প্রাথমিক ধারনা নিয়ে নেই। ট্রাই ব্লকঃ এই ব্লকে আমরা কোডের সেই অংশগুলোই রাখবো যেখানে কোনো ধরনের এরর হওয়ার সম্ভাবনা রয়েছে অথবা এমনও হতে পারে যে আমরা নিজেরাই হয়তো সেখান থেকে এরর থ্রো করছি। ক্যাচ ব্লকঃ ট্রাই ব্লকের কোডে কোনো এরর পাওয়া গেলে সেটাকে আমরা কিভাবে হ্যান্ডেল করবো এই সম্পর্কিত সব কোড আমরা ক্যাচ ব্লকে লিখবো। অর্থাৎ ট্রাই ব্লক থেকে থ্রো করা এরর ক্যাচ করে আমরা এখানে পরবর্তী কাজ করবো। ফাইনালি ব্লকঃ মনে রাখতে হবে যে ফাইনালি ব্লকের কোড সবসময় ট্রাই-ক্যাচ ব্লকের পরে রান করবে। আমরা যদি এমন কিছু করতে চাই যেই কাজটা প্রতিবার ট্রাই-ক্যাচ ব্লকের পরে হওয়া প্রয়োজন তাহলে সেটার জন্য ফাইনালি ব্লক ব্যবহার করতে পারি। উপরের তিনটি ব্লকের মধ্যে ক্যাচ এবং ফাইনালি ব্লক দুটি কিন্তু অপশনাল অথবা ঐচ্ছিক। অর্থাৎ ট্রাই ব্লকটির সাথে ক্যাচ এবং ফাইনালি ব্লক দুইটি লিখতেই হবে এমন কোনো বাধ্যবাধকতা নেই। এই ব্লক দুটি আমরা আমাদের প্রয়োজন অনুযায়ী ব্যবহার করতে পারবো।try {
// কোনো ধরনের এক্সেপশন থ্রো হওয়ার আগ পর্যন্ত এই ব্লকের কোড রান করতে থাকবে
} catch {
// ট্রাই ব্লক থেকে কোনো এক্সেপশন থ্রো হলে এই ব্লকের কোড রান করবে
} finally {
// এক্সেপশন থ্রো হোক অথবা না হোক, ট্রাই এবং ক্যাচ ব্লকের পরেই এই ব্লকের কোড রান করবে
}
- উদাহরন ১ঃ
try {JSON.parse(“<html></html>”);} catch (e) {if (e instanceof SyntaxError) {console.log(“I caught a SyntaxError! I’ll handle it specifically here.”);} else {console.log(“I caught an error, but it wasn’t a SyntaxError. I handle all non-SyntaxErrors here.”);}}
- উদাহরন ২ঃ
try {console.log(a);} catch (error) {console.log(“An error caught”);console.log(“Error message: “ + error);}
- উদাহরন ৩ঃ
try {nonExistentFunction();} catch (error) {console.error(error);// expected output: ReferenceError: nonExistentFunction is not defined// Note – error messages will vary depending on browser}
- উদাহরন ৪ঃ
async function getData() {try {const response = await fetch(“https://jsonplaceholder.typicode.com/todos/1”);if (response.status === 200) {const result = await response.json();console.log(result);} else {console.log(“Failed to load Data”);}} catch (error) {console.log(“Server Error”, error);}}getData();
- উদাহরন ৫ঃ
try {console.log(“success”);} catch (error) {console.log(“There is a error”);} finally {console.log(“Always calling”);}
- finally কি সবসময়ই কল হয় ?
- শুধু কি try লেখা যায় catch/finally ছাড়া ?
- একটি asynchronous ফাংশনে API কল করে ,যদি status Code ২০০ হয় তবে ডাটা কনসোলে দেখাতে হবে এবং তা try catch দিয়ে এরর হ্যান্ডেলিং করতে হবে।