জাভাতে নাল পয়েন্টার ব্যতিক্রম: বাস্তবায়ন এবং উদাহরণ



এই নিবন্ধটি আপনাকে জাভায় নুল পয়েন্টার ব্যতিক্রম উদাহরণ সহ প্রচুর উদাহরণ সহ একটি বিশদ এবং ব্যাপক জ্ঞান সরবরাহ করবে।

কোডটি মসৃণভাবে চলার জন্য ব্যতিক্রমগুলি প্রয়োজন এবং প্রোগ্রামারগুলিকে ত্রুটি সমাধানের জন্য জানাতে দিন। এই নিবন্ধে, আমরা নিম্নলিখিত ক্রমে জাভাতে নুল পয়েন্টার ব্যতিক্রমটির দিকে মনোনিবেশ করব:

জাভাতে নল পয়েন্টার ব্যতিক্রম কী?





জাভাতে নাল পয়েন্টার ব্যতিক্রম একটি রানটাইম ব্যতিক্রম। জাভা বিশ্বে, একটি বিশেষ নাল মান একটি অবজেক্ট রেফারেন্সের জন্য বরাদ্দ করা হয়। নাল পয়েন্টার ব্যতিক্রমটি চালু করা হয় যখন কোনও প্রোগ্রাম কোনও অবজেক্ট রেফারেন্স ব্যবহার করার চেষ্টা করে, যার নাল মান থাকে। যা হতে পারে:

  • নাল বস্তু থেকে একটি নির্দিষ্ট পদ্ধতি আহ্বান করা।
  • নাল বস্তুর ক্ষেত্র অ্যাক্সেস বা সংশোধন করতে।
  • নাল দৈর্ঘ্য বিবেচনা করে, যেন এটি একটি অ্যারে হয়।
  • নাল অবজেক্টের স্লটগুলিতে অ্যাক্সেস বা সংশোধন করার সময়।
  • নিক্ষেপযোগ্য মূল্য হিসাবে নিক্ষেপ করা।
  • নাল বস্তুর উপর সিনক্রোনাইজ করার চেষ্টা করা হচ্ছে।

কেন আমাদের নাল মান দরকার?



নাল জাভাতে ব্যবহৃত একটি অনন্য মান। নালটি কোনও রেফারেন্স ভেরিয়েবলের জন্য নির্ধারিত হয় না তা দেখানোর জন্য ব্যবহৃত হয়। নালীর প্রাথমিক প্রয়োগটি লিঙ্কযুক্ত তালিকাগুলি এবং গাছের মতো ডেটা স্ট্রাকচার বাস্তবায়নের মধ্যে। কিছু অন্যান্য অ্যাপ্লিকেশনগুলির মধ্যে নাল বস্তুর নিদর্শন এবং সিঙ্গলটন নিদর্শন অন্তর্ভুক্ত। একটি সিঙ্গলটন প্যাটার্ন নির্দিষ্ট করে যে কোনও শ্রেণীর কেবলমাত্র একটি উদাহরণ শুরু করা যেতে পারে এবং তার উদ্দেশ্যটি বিশ্বব্যাপী অ্যাক্সেসের পয়েন্ট সরবরাহ করতে পারে।

কোনও শ্রেণীর অন্তত একটি উদাহরণ তৈরির সর্বোত্তম এবং সহজ উপায় হ'ল সমস্ত কনস্ট্রাক্টরকে ব্যক্তিগত হিসাবে ঘোষণা করা। তারপরে তারা একটি সর্বজনীন পদ্ধতি তৈরি করে যা শ্রেণীর অনন্য উদাহরণটি দেয়।

সাজানো লাইব্রেরি সি ++
// র্যান্ডম ইউইউডি ফাংশন ব্যবহার করতে। আমদানি java.util.UID আমদানি java.io. * ক্লাস সিঙ্গলটন {// এখানে আমরা একক এবং আইডি মান বাতিল করতে শুরু করি। প্রাইভেট স্ট্যাটিক সিঙ্গলটন সিঙ্গল = নাল প্রাইভেট স্ট্রিং আইডি = নাল প্রাইভেট সিঙ্গলটন () {/ * সিঙ্গলটন শ্রেণীর নতুন দৃষ্টান্ত তৈরি না করার জন্য এটিকে ব্যক্তিগত করুন। * / // একটি এলোমেলো আইডি আইডি তৈরি করুন = ইউইউডি.রাডম ইউইউডি ()। টুস্ট্রিং ()} পাবলিক স্ট্যাটিক সিঙ্গলটন getInstance () {যদি (একক == নাল) একক = নতুন সিঙ্গলটন () একক ফিরে আসে} পাবলিক স্ট্রিং getID () {রিটার্ন this.ID}} // ড্রাইভার কোড পাবলিক ক্লাস টেস্টসিংটন {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {সিঙ্গেলটন এস = সিঙ্গলটন.জেটআইনস্ট্যানস () System.out.println (s.getID ())}} //

আউটপুট:



null-pointer

উপরের উদাহরণটি সিঙ্গলটন শ্রেণীর স্থির উদাহরণ instance উদাহরণটি একবারে সিঙ্গলটন পান ইনস্ট্যান্স পদ্ধতির অভ্যন্তরে একবারে সূচনা করা হয়।

স্নাতকোত্তর সার্টিফিকেট বনাম মাস্টার্স

জাভাতে নাল পয়েন্টার ব্যতিক্রম কীভাবে এড়ানো যায়?

জাভাতে নাল পয়েন্টার ব্যতিক্রম এড়ানোর জন্য, আমাদের অবশ্যই নিশ্চিত করতে হবে যে আপনি সমস্ত বস্তুগুলি ব্যবহার করার আগে সেগুলি সঠিকভাবে শুরু করা হয়েছে। যখন কোনও রেফারেন্স ভেরিয়েবল ঘোষণা করা হয়, তখন অবশ্যই আমাদের অবশ্যই যাচাই করতে হবে যে কোনও বস্তু নাল নয় এবং এছাড়াও আমরা বস্তুগুলি থেকে পদ্ধতি বা ক্ষেত্রগুলির অনুরোধ করার আগে। সমস্যাটি কাটিয়ে উঠতে এর সম্পর্কিত সমাধানগুলির সাথে নীচে কয়েকটি সমস্যা রয়েছে are

// প্রোগ্রাম কোনও পদ্ধতিতে ডাকতে দেখানোর জন্য // নালপোয়েন্টারএক্সেপশন আমদানি java.io. * শ্রেণীর জিএফজি {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {// নাল মান দিয়ে স্ট্রিং ভেরিয়েবলের সূচনা করছে ptr = নাল // Ptr.equals নাল বা ঠিকঠাক কাজ করে কিনা তা পরীক্ষা করা হচ্ছে। চেষ্টা করুন try // কোডের এই লাইনটি নালপয়েন্টারএক্সেপশনটি ছুড়ে ফেলেছে // কারণ পিটিআরটি নাল যদি (ptr.equals ('gfg')) System.out.print ('একই') অন্য System.out.print ('একই নয়')} ক্যাচ (নালপয়েন্টারএক্সেপশন ই) {System.out.print ('নালপয়েন্টারএক্সেপশন ক্যাচ')}}}

আউটপুট:

একটি পদ্ধতির আর্গুমেন্টগুলির একটি চেক রাখা

সর্বদা মনে রাখবেন যে কোনও নতুন পদ্ধতির বডিটি কার্যকর করার আগে আমাদের নাল মানগুলির জন্য তার যুক্তিগুলি নিশ্চিত করা উচিত এবং পদ্ধতিটির কার্যকরকরণের সাথে চালিয়ে যাওয়া উচিত। যদি এবং কেবল তখনই যখন আর্গুমেন্টগুলি সঠিকভাবে পরীক্ষা করা হয়। অন্যথায়, এটি একটি 'অবৈধআর্গুমেন্ট এক্সেপশন' ফেলে দেবে এবং কলিং পদ্ধতিটি কল করবে যে পাস করা যুক্তিগুলির সাথে কিছু ভুল।

// প্রোগ্রামগুলি ব্যবহার করার আগে প্যারামিটারগুলি শূন্য রয়েছে কি না তা পরীক্ষা করতে। আমদানি java.io. * শ্রেনী জিএফজি {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {// স্ট্রিংয়ের একটি ফাঁকা স্ট্রিং সেট করে এবং getLength () স্ট্রিং s = '' চেষ্টা করুন {System.out.println (getLength (গুলি) )} ক্যাচ (IllegalArgumentException e) {System.out.println ('IllegalArgumentException ধরা')} // স্ট্রিংয়ের মান সেট করা এবং getLength () s = 'GeeforforGeeks' চেষ্টা করুন {System.out.println (getLength (গুলি) )} ক্যাচ (অবৈধ আরগমেন্টএক্সেপশন ই) {System.out.println ('অবৈধ অর্গমেন্ট এক্সেক্সেশন ধরা')} // নাল হিসাবে সেট করা এবং getLength () s = নাল চেষ্টা try System.out.println (getLength (গুলি))} ক্যাচ ( অবৈধআর্গুমেন্টএক্সেপশন ই) {System.out.println ('অবৈধআর্গুমেন্টএক্সেপশন ধরা')}} // স্ট্রিং এর দৈর্ঘ্য ফিরিয়ে ফাংশন। এটি নিক্ষিপ্ত হলে // অবৈধআর্গুমেন্ট এক্সেকশনটি ছুড়ে ফেলে। পাবলিক স্ট্যাটিক ইন্ট getLength (স্ট্রিং গুলি) - যদি (s == নাল) নতুন অবৈধআর্গুমেন্টএক্সেপশন ('যুক্তিটি নাল হতে পারে না)' রিটার্ন s.leth ()}}

আউটপুট:

টার্নারি অপারেটরের ব্যবহার

নলপয়েন্টারএক্সসেপশন এড়ানোর জন্য একটি টের্নারি অপারেটর ব্যবহার করা হয়। বুলিয়ান এক্সপ্রেশন চেক করা হয় এবং যদি এক্সপ্রেশনটি সত্য হয় তবে মান 1 ফিরে আসে, অন্যথায়, মান 2 ফিরে আসে। নাল পয়েন্টার পরিচালনা করার জন্য টের্নারি অপারেটরটি ব্যবহার করা যেতে পারে: ডান চিত্রটি সম্পর্কিত আউটপুট।

// একটি জাভা প্রোগ্রাম যা দেখানোর জন্য যে আমরা নলপয়েন্টারএক্সসেপশন এড়ানোর জন্য // টের্নারি অপারেটর ব্যবহার করতে পারি। আমদানি java.io. * শ্রেণি জিএফজি {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) {// নাল মান দিয়ে স্ট্রিং ভেরিয়েবল শুরু করা হচ্ছে স্ট্রিং = নাল স্ট্রিং মেসেজ = (আরআর == নাল)? '': str.substring (0,5) System.out.println (message) str = 'এডুরেকা_ জাভা_ব্লগ' বার্তা = (স্ট্র == নাল)? '': str.substring (0,5) System.out.println (বার্তা)}

আউটপুট:

এডুরেক

এটির সাহায্যে আমরা জাভাতে নুল পয়েন্টার ব্যতিক্রম শেষে এসেছি। আমি আশা করি আপনি নুল পয়েন্টার ব্যতিক্রম সম্পর্কে ধারণা পেয়েছেন।

দেখুন এডুরেকা, বিশ্বস্ত জুড়ে 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা by এডুরেকার জাভা জে 2 ইই এবং এসওএ প্রশিক্ষণ এবং শংসাপত্রের কোর্সটি এমন শিক্ষার্থী এবং পেশাদারদের জন্য তৈরি করা হয়েছে যারা জাভা ডেভেলপার হতে চান। কোর্সটি আপনাকে জাভা প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং হাইবারনেট ও স্প্রিংয়ের মতো বিভিন্ন জাভা ফ্রেমওয়ার্কের পাশাপাশি মূল এবং উন্নত জাভা উভয় ধারণার জন্য প্রশিক্ষণের জন্য তৈরি করা হয়েছে।

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এটি 'জাভাতে নুল পয়েন্টার ব্যতিক্রম' ব্লগের মন্তব্য বিভাগে উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।

সিএসএস স্প্রাইটস কীভাবে ব্যবহার করবেন