একটি স্ট্যাটিক ব্লক বিবৃতিগুলির একটি সেট, যা JVM দ্বারা main() পদ্ধতি কার্যকর করার আগে কার্যকর করা হবে। ক্লাস লোড করার সময় যদি আমরা কোনো অ্যাক্টিভিটি করতে চাই তাহলে আমাদের সেই অ্যাক্টিভিটিটিকে একটি স্ট্যাটিক ব্লকের ভিতরে সংজ্ঞায়িত করতে হবে। কারণ এই ব্লকটি ক্লাস লোড হওয়ার সময় কার্যকর করে .
একটি স্ট্যাটিক ব্লক থেকে একটি ব্যতিক্রম নিক্ষেপ করুন
- একটি স্ট্যাটিক ব্লক শুধুমাত্র একটি RunTimeException নিক্ষেপ করতে পারে , অথবা একটি চেক করা ব্যতিক্রম ধরার জন্য একটি চেষ্টা এবং ক্যাচ ব্লক থাকা উচিত৷
- একটি স্ট্যাটিক ব্লক যখন একটি ক্লাস একটি ক্লাস লোডার দ্বারা লোড করা হয় তখন ঘটে। কোডটি হয় একটি স্ট্যাটিক ব্লক আকারে আসতে পারে অথবা স্ট্যাটিক ডেটা মেম্বার শুরু করার জন্য একটি স্ট্যাটিক পদ্ধতিতে কল হিসাবে।
- উভয় ক্ষেত্রেই, চেক করা ব্যতিক্রমগুলি কম্পাইলার দ্বারা অনুমোদিত নয়। যখন একটি অচেক করা ব্যতিক্রম ঘটে, এটি ExceptionInInitializerError দ্বারা মোড়ানো হয় , যা তারপর থ্রেডের প্রেক্ষাপটে নিক্ষেপ করা হয় যা ক্লাস লোডিং শুরু করে।
- একটি স্ট্যাটিক ব্লক থেকে একটি চেক করা ব্যতিক্রম নিক্ষেপ করার চেষ্টা করছে৷ এছাড়াও সম্ভব নয়। আমাদের একটি স্ট্যাটিক ব্লকে একটি চেষ্টা এবং ধরা ব্লক থাকতে পারে যেখানে একটি চেক করা ব্যতিক্রম ট্রাই ব্লক থেকে নিক্ষেপ করা যেতে পারে তবে আমাদের ক্যাচ ব্লকের মধ্যে এটি সমাধান করতে হবে। আমরা থ্রো কীওয়ার্ড ব্যবহার করে এটিকে আরও প্রচার করতে পারি না।
উদাহরণ
পাবলিক ক্লাস StaticBlockException { static int i, j; স্ট্যাটিক { System.out.println("স্ট্যাটিক ব্লকে"); চেষ্টা করুন { i =0; j =10/i; } ক্যাচ(ব্যতিক্রম e){ System.out.println("ইনিশিয়ালাইজ করার সময় ব্যতিক্রম" + e.getMessage()); নতুন RuntimeException(e.getMessage()); } } পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং আর্গস[]) { স্ট্যাটিকব্লক এক্সেপশন sbe =নতুন স্ট্যাটিকব্লক এক্সেপশন(); System.out.println("প্রধান() পদ্ধতিতে"); System.out.println("i এর মান হল :"+i); System.out.println("j এর মান হল :"+ j); }}