Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্ট পার্স করার জন্য একটি শক্তিশালী টুল, যা ব্যবহারকারীর ইনপুট সঠিকভাবে যাচাই এবং হ্যান্ডল করার জন্য বিভিন্ন ফিচার সরবরাহ করে। তবে, কমান্ড লাইন আর্গুমেন্টে যদি কোনো ভুল থাকে বা ব্যবহারকারীরা ভুলভাবে আর্গুমেন্ট প্রদান করে, তবে আপনি Custom Error Messages এবং Exception Handling ব্যবহার করে একটি আরও উন্নত এবং ব্যবহারকারী-বান্ধব অভিজ্ঞতা তৈরি করতে পারেন।
এখানে, আমরা দেখবো কিভাবে Custom Error Messages এবং Exception Handling ব্যবহার করে আর্গুমেন্ট পার্সিং এবং ব্যবহারকারীদের জন্য সঠিক আউটপুট প্রদান করা যায়।
1. Apache Commons CLI: Custom Error Message Handling
Custom Error Messages ব্যবহারকারীকে সঠিকভাবে বুঝাতে সাহায্য করে যে কোন আর্গুমেন্টটি ভুল দেওয়া হয়েছে এবং কীভাবে সেগুলো সঠিক করতে হবে। আপনি HelpFormatter ক্লাস ব্যবহার করে কাস্টম এরর বার্তা এবং সাহায্য বার্তা তৈরি করতে পারেন।
1.1. Custom Error Message এর উদাহরণ
import org.apache.commons.cli.*;
public class CommandLineExample {
public static void main(String[] args) {
// Option অবজেক্ট তৈরি করা
Options options = new Options();
// --name এবং --age অপশন তৈরি করা
options.addOption("n", "name", true, "Your name");
options.addOption("a", "age", true, "Your age");
// CommandLineParser ব্যবহার করা
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// --name অপশন চেক করা
if (!cmd.hasOption("n")) {
System.out.println("Error: Name is required. Use -n or --name to specify your name.");
printHelp(options);
System.exit(1);
}
// --age অপশন চেক করা
if (!cmd.hasOption("a")) {
System.out.println("Error: Age is required. Use -a or --age to specify your age.");
printHelp(options);
System.exit(1);
}
// --name এবং --age অপশনের আর্গুমেন্ট বের করা
String name = cmd.getOptionValue("n");
String age = cmd.getOptionValue("a");
// আউটপুট প্রিন্ট করা
System.out.println("Name: " + name);
System.out.println("Age: " + age);
} catch (ParseException e) {
System.out.println("Error: " + e.getMessage());
printHelp(options);
System.exit(1);
}
}
// HelpFormatter ব্যবহার করে কাস্টম সাহায্য বার্তা
private static void printHelp(Options options) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineExample", options);
}
}
ব্যাখ্যা:
- Custom Error Messages:
System.out.println()এর মাধ্যমে কাস্টম এরর বার্তা প্রদর্শন করা হচ্ছে, যখন ব্যবহারকারী কোনো আর্গুমেন্ট বা অপশন না দেয়। - HelpFormatter:
HelpFormatterব্যবহার করা হয়েছে, যাতে সঠিক আর্গুমেন্ট এবং অপশনগুলির সাহায্য বার্তা প্রদর্শিত হয়। - System.exit(1): যখন কোনো ভুল হয়, তখন
System.exit(1)এর মাধ্যমে প্রোগ্রামটি বন্ধ করা হয় এবং এরর কোড ফেরত দেয়া হয়।
আউটপুট উদাহরণ:
যদি আপনি আর্গুমেন্ট ছাড়া প্রোগ্রামটি চালান:
java CommandLineExampleআউটপুট:
Error: Name is required. Use -n or --name to specify your name. Usage: CommandLineExample -a <age> Your age -h, --help Show help -n <name> Your nameযদি
--nameবা--ageঅপশন ছাড়া প্রোগ্রামটি চালান:java CommandLineExample -n Johnআউটপুট:
Error: Age is required. Use -a or --age to specify your age. Usage: CommandLineExample -a <age> Your age -h, --help Show help -n <name> Your name
2. Exception Handling
Apache Commons CLI লাইব্রেরি একটি নির্দিষ্ট এক্সসেপশন (ParseException) ফেলে যখন আর্গুমেন্ট পার্সিংয়ের সময় কোনো সমস্যা হয়। এই এক্সসেপশনটি হ্যান্ডল করা গুরুত্বপূর্ণ, যাতে ব্যবহারকারীকে সঠিক বার্তা দেওয়া যায় এবং প্রোগ্রামটি ক্র্যাশ না হয়।
2.1. ParseException Handling এর উদাহরণ
import org.apache.commons.cli.*;
public class CommandLineExample {
public static void main(String[] args) {
// Option অবজেক্ট তৈরি করা
Options options = new Options();
// --name এবং --age অপশন তৈরি করা
options.addOption("n", "name", true, "Your name");
options.addOption("a", "age", true, "Your age");
// CommandLineParser ব্যবহার করা
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// --name অপশন চেক করা
if (cmd.hasOption("n")) {
String name = cmd.getOptionValue("n");
System.out.println("Name: " + name);
} else {
System.out.println("Error: Name is required.");
printHelp(options);
System.exit(1);
}
// --age অপশন চেক করা
if (cmd.hasOption("a")) {
String age = cmd.getOptionValue("a");
System.out.println("Age: " + age);
} else {
System.out.println("Error: Age is required.");
printHelp(options);
System.exit(1);
}
} catch (ParseException e) {
System.out.println("Error: Invalid command line arguments.");
System.out.println("Reason: " + e.getMessage());
printHelp(options);
System.exit(1);
}
}
// HelpFormatter ব্যবহার করে কাস্টম সাহায্য বার্তা
private static void printHelp(Options options) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineExample", options);
}
}
ব্যাখ্যা:
- ParseException Handling: যদি আর্গুমেন্টগুলি সঠিকভাবে পার্স না হয়, তখন
ParseExceptionথ্রো হবে এবং তার মেসেজসহ কাস্টম এরর বার্তা প্রদর্শন করা হবে। - Error Message: যদি কোনো আর্গুমেন্ট বা অপশন অনুপস্থিত থাকে, তাহলে ব্যবহারকারীর জন্য স্পষ্ট বার্তা প্রদর্শন করা হবে।
আউটপুট উদাহরণ:
যদি কোনো ভুল আর্গুমেন্ট দেওয়া হয়:
java CommandLineExample -n John -x 30আউটপুট:
Error: Invalid command line arguments. Reason: unrecognized option: -x Usage: CommandLineExample -a <age> Your age -h, --help Show help -n <name> Your nameযদি সঠিক আর্গুমেন্ট না থাকে:
java CommandLineExample -n Johnআউটপুট:
Error: Age is required. Usage: CommandLineExample -a <age> Your age -h, --help Show help -n <name> Your name
সারাংশ
Apache Commons CLI এর মাধ্যমে কমান্ড লাইন আর্গুমেন্ট পার্সিং এর সময় Custom Error Messages এবং Exception Handling খুবই গুরুত্বপূর্ণ। আপনি HelpFormatter ব্যবহার করে কাস্টম সাহায্য বার্তা এবং এরর মেসেজ তৈরি করতে পারেন, যা ব্যবহারকারীর জন্য কার্যকরী নির্দেশিকা প্রদান করবে। এছাড়া ParseException এর মাধ্যমে সঠিকভাবে এক্সসেপশন হ্যান্ডলিং করা যায়, যাতে ভুল আর্গুমেন্টের জন্য উপযুক্ত বার্তা প্রদর্শিত হয় এবং প্রোগ্রামটি ক্র্যাশ না হয়।
Read more