জাভাস্ক্রিপ্টে ত্রুটি পরিচালনা
এই নিবন্ধটি জাভাস্ক্রিপ্টে ত্রুটি পরিচালনার বিষয়টি ব্যাখ্যা করে।
YouTube Video
জাভাস্ক্রিপ্টে ত্রুটি পরিচালনা
জাভাস্ক্রিপ্টে ত্রুটি পরিচালনা একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা প্রোগ্রামে অপ্রত্যাশিত সমস্যাগুলি দেখা দিলে তা ধরতে এবং যথাযথভাবে পরিচালনা করতে সাহায্য করে। মূলত, ত্রুটি ধরতে এবং পরিচালনা করতে সাধারণত try...catch
সিনট্যাক্স ব্যবহার করা হয়। এর পাশাপাশি, Promises বা অসমসynchronous অপারেশন পরিচালনা করার সময়, ত্রুটি পরিচালনা async/await
বা Promise.prototype.catch
ব্যবহার করেও করা যায়।
try...catch
সিনট্যাক্স
try...catch
কোড ব্লকের মধ্যে ত্রুটি সংঘটিত হলে সেগুলি ধরতে এবং পরিচালনা করতে ব্যবহার করা হয়।
1try {
2 // Code that may throw an error
3 let result = riskyFunction();
4 console.log(result);
5} catch (error) {
6 // Catch and handle the error
7 console.error("An error occurred:", error.message);
8} finally {
9 // Code that will always execute
10 console.log("Error handling has completed.");
11}
try
ব্লকের মধ্যে ত্রুটি দেখা দিলে প্রোগ্রামের কার্যধারা বন্ধ হয়ে যায় এবংcatch
ব্লকটি কার্যকর হয়।finally
ব্লকটি সবসময় কার্যকর হয়, ত্রুটি থাকুক বা না-থাকুক। এটি উৎস ছাড়ানোর এবং চূড়ান্ত প্রসেসিংসহ অন্যান্য কাজে সহায়ক।
ত্রুটি ছুড়ে দেওয়া (throw
)
জাভাস্ক্রিপ্টে, throw
কি-ওয়ার্ড ব্যবহার করে আপনি স্পষ্টভাবে একটি ত্রুটি উদ্রেক করতে পারেন। এটি কাস্টম ত্রুটি বার্তা বা কাস্টম ত্রুটি ছুড়ে দেওয়ার ক্ষেত্রে ব্যবহৃত হয়।
1function checkAge(age) {
2 if (age < 18) {
3 throw new Error("You are under 18 years old.");
4 }
5 return "Age verification completed.";
6}
7
8try {
9 let result = checkAge(15);
10 console.log(result);
11} catch (error) {
12 console.error(error.message); // Displays "You are under 18 years old."
13}
অসমসynchronous অপারেশনসমূহে ত্রুটি পরিচালনা (Promise
এবং async/await
)
অসমসynchronous অপারেশন পরিচালনার সময় ত্রুটি পরিচালনা কিছুটা আলাদা হয়। Promises ব্যবহার করার সময়, ত্রুটিগুলি catch
মেথড দিয়ে ধরা হয়।
1let promise = new Promise((resolve, reject) => {
2 // Asynchronous operation
3 setTimeout(() => reject(new Error("An issue has occurred!")), 1000);
4});
5
6promise
7 .then(result => console.log(result))
8 .catch(error => console.error(error.message)); // Displays "An issue has occurred!"
async/await
ব্যবহার করে অসমসynchronous অপারেশন পরিচালনার সময়, আপনি try...catch
এর মাধ্যমে ত্রুটি পরিচালনা করতে পারেন।
1async function fetchData() {
2 try {
3 let response = await fetch('https://api.example.com/data');
4 let data = await response.json();
5 console.log(data);
6 } catch (error) {
7 console.error("An error occurred while fetching data:", error.message);
8 }
9}
10
11fetchData();
সারসংক্ষেপ
- আপনি
try...catch
সিনট্যাক্স ব্যবহার করে synchronous ত্রুটি ধরতে পারেন। - আপনি
throw
ব্যবহার করে আপনার নিজস্ব ত্রুটি ছুড়ে দিতে পারেন। - অসমসynchronous অপারেশনের ত্রুটি
Promise
এরcatch
মেথড বাasync/await
এবংtry...catch
ব্যবহার করে পরিচালনা করা যায়।
এই পদ্ধতিগুলি ব্যবহার করে, আপনি নিশ্চিত করতে পারেন যে আপনার প্রোগ্রাম ত্রুটি সংঘটিত হলেও সঠিকভাবে কাজ করবে।
Error
Error
ক্লাসটি ত্রুটি পরিচালনার জন্য ব্যবহৃত হয়। এটি ত্রুটি তৈরি করতে, ত্রুটি বার্তা এবং স্ট্যাক ট্রেস সরবরাহ করার সক্ষমতা প্রদান করে।
1try {
2 throw new Error("Something went wrong");
3} catch (e) {
4 console.log(e.message); // Something went wrong
5}
প্রাথমিক ব্যবহার
একটি Error
অবজেক্ট স্পষ্টভাবে তৈরি করা যেতে পারে যখন একটি ত্রুটি ঘটে। আপনি new Error()
দিয়ে একটি উদাহরণ তৈরি করেন এবং একটি ত্রুটির বার্তা পাস করেন।
1const error = new Error("Something went wrong");
2console.log(error.message); // "Something went wrong"
3console.log(error.name); // "Error"
4console.log(error.stack); // Stack trace (information about where the error occurred)
throw
ব্যবহার করে ত্রুটি ছোড়া
জাভাস্ক্রিপ্টে, আপনি throw
কীওয়ার্ড ব্যবহার করে একটি ত্রুটি ছুড়তে পারেন। এটি বিশেষ পরিস্থিতিতে প্রসেসিং বাধাগ্রস্ত করতে এবং একটি ত্রুটি হ্যান্ডলারের কাছে নিয়ন্ত্রণ স্থানান্তর করতে ব্যবহৃত হয়।
1function doSomething() {
2 throw new Error("This function is not yet implemented");
3}
4
5try {
6 doSomething();
7} catch (e) {
8 console.error(e.message); // "This function is not yet implemented"
9}
throw
দিয়ে ছোড়া ত্রুটিগুলি try...catch
সিনট্যাক্স ব্যবহার করে ধরা যায়।
কাস্টম ত্রুটি তৈরি
জাভাস্ক্রিপ্টে, আপনি Error
ক্লাস প্রসারিত করে আপনার নিজস্ব কাস্টম ত্রুটি তৈরি করতে পারেন। এটি আপনাকে নির্দিষ্ট পরিস্থিতির জন্য উপযুক্ত ত্রুটি তৈরি করার অনুমতি দেয়।
1class CustomError extends Error {
2 constructor(message) {
3 super(message); // Call the parent class constructor
4 this.name = "CustomError"; // Set the error name
5 }
6}
7
8try {
9 throw new CustomError("A custom error has occurred");
10} catch (e) {
11 console.error(e.name); // "CustomError"
12 console.error(e.message); // "A custom error has occurred"
13}
বিল্ট-ইন ত্রুটি শ্রেণি
জাভাস্ক্রিপ্টে Error
ক্লাস প্রসারিত করা বেশ কয়েকটি বিল্ট-ইন ত্রুটি শ্রেণি রয়েছে। এগুলি নির্দিষ্ট ত্রুটিগুলি উপস্থাপনের জন্য ব্যবহৃত হয়।
ReferenceError
: যখন আপনি এমন একটি ভেরিয়েবল রেফার করেন যা বিদ্যমান নেই তখন ঘটে।TypeError
: যখন একটি মানের টাইপ প্রত্যাশিত টাইপ থেকে আলাদা হয় তখন ঘটে।RangeError
: যখন একটি সংখ্যা অনুমোদিত সীমার বাইরে থাকে তখন ঘটে।SyntaxError
: যখন সিনট্যাকটিকভাবে সঠিক নয় এমন কোড কার্যকর হয় তখন ঘটে।EvalError
:eval()
ফাংশন ব্যবহারের সাথে সংযুক্ত ত্রুটি। এটি বর্তমান সময়ে খুব কম ব্যবহার করা হয়।URIError
: যখন একটি অকার্যকর URI (এনকোডিং বা ডিকোডিং ত্রুটি) ব্যবহৃত হয় তখন ঘটে।
উদাহরণ: ReferenceError
এখানে ReferenceError
এর একটি উদাহরণ দেওয়া হলো।
1try {
2 console.log(undefinedVariable); // Undefined variable
3} catch (e) {
4 console.error(e.name); // "ReferenceError"
5 console.error(e.message); // "undefinedVariable is not defined"
6}
উদাহরণ: TypeError
এখানে TypeError
এর একটি উদাহরণ দেওয়া হলো।
1try {
2 null.f(); // Attempting to call a function on null
3} catch (e) {
4 console.error(e.name); // "TypeError"
5 console.error(e.message); // "Cannot read properties of null (reading 'f')"
6}
finally
ব্লক
try...catch
সিনট্যাক্সে, একটি ত্রুটি ঘটছে কি না তা নির্বিশেষে আপনি কার্যকর করতে চান এমন কার্যক্রমের জন্য finally
ব্লক ব্যবহার করুন।
1try {
2 throw new Error("An issue has occurred");
3} catch (e) {
4 console.error(e.message); // "An issue has occurred"
5} finally {
6 console.log("Performing cleanup");
7}
এই উদাহরণে, finally
ব্লকের অপারেশনগুলি এমনকি একটি ত্রুটি নিক্ষেপ করা হলেও কার্যকর হয়।
Error
অবজেক্টের গুণাবলীবলি
Error
অবজেক্টের নিম্নলিখিত গুণাবলী রয়েছে।
message
: এটি ত্রুটির বার্তা।name
: ত্রুটির নাম, যা ডিফল্টভাবে"Error"
হয়।stack
: ত্রুটি কোথায় ঘটেছে সেই তথ্যসহ একটি স্ট্যাক ট্রেস, যা ডিবাগিংয়ের জন্য উপকারী।
এক্সসেপশন হ্যান্ডলিংয়ের সুবিধাসমূহ
ত্রুটি পরিচালন সঠিকভাবে প্রয়োগ করে, আপনি অ্যাপ্লিকেশনকে অপ্রত্যাশিত আচরণের সময় ক্র্যাশ হওয়া থেকে রক্ষা করতে পারেন। try...catch
সিনট্যাক্স এবং ত্রুটি অবজেক্টগুলি যথাযথভাবে ব্যবহার করে, আপনি আরও দৃঢ় কোড লিখতে পারেন।
1function divide(a, b) {
2 if (b === 0) {
3 throw new Error("Cannot divide by zero");
4 }
5 return a / b;
6}
7
8try {
9 console.log(divide(4, 0)); // An error will occur
10} catch (e) {
11 console.error(e.message); // "Cannot divide by zero"
12}
সারসংক্ষেপ
Error
ক্লাসটি ত্রুটির কারণ প্রতিনিধিত্ব করতে এবং ত্রুটি পরিচালন সম্পন্ন করতে ব্যবহৃত হয়।- ত্রুটি পরিচালনার জন্য এবং অপ্রত্যাশিত অ্যাপ্লিকেশন বন্ধ হওয়া রোধ করতে
try...catch...finally
সিনট্যাক্স ব্যবহার করুন। Error
ক্লাস প্রসারিত করে কাস্টম ত্রুটি তৈরি করাও সম্ভব।TypeError
এবংReferenceError
এর মতো বিল্ট-ইন ত্রুটি ক্লাস ব্যবহার করে আপনি বিভিন্ন প্রকারের ত্রুটিগুলি পরিচালনা করতে পারেন।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।