বেশ বোকা প্রশ্ন। কোড দেওয়া:
public static int sum(String a, String b) /* throws? WHAT? */ {
int x = Integer.parseInt(a); // throws NumberFormatException
int y = Integer.parseInt(b); // throws NumberFormatException
return x + y;
}
আপনি বলতে পারেন এটি জাভা ভাল কিনা? আমি যে বিষয়ে কথা বলছি তা NumberFormatExceptionহ'ল একটি চেক করা ব্যতিক্রম। আপনি না থাকে অংশ হিসেবে এটা উল্লেখ করার sum()স্বাক্ষর। অধিকন্তু, আমি যতদূর বুঝতে পেরেছি, পরীক্ষা করা ব্যাতিক্রমের ধারণাটি কেবলমাত্র প্রোগ্রামটির বাস্তবায়নটি ভুল, এবং আরও বেশি কিছু পরীক্ষা করা যায় না, চেক করা ব্যতিক্রমগুলি ধরা একটি খারাপ ধারণা, কারণ এটি রানটাইমের সময় খারাপ প্রোগ্রাম ঠিক করার মতো ।
কেউ দয়া করে পরিষ্কার করবেন কিনা:
NumberFormatExceptionপদ্ধতির স্বাক্ষরের অংশ হিসাবে আমার নির্দিষ্ট করা উচিত ।- আমার নিজের চেক করা ব্যতিক্রম (
BadDataException) সংজ্ঞায়িত করা উচিত ,NumberFormatExceptionপদ্ধতির অভ্যন্তরে হ্যান্ডেল করা উচিত এবং এটিকে আবার নিক্ষেপ করা উচিতBadDataException। - আমার নিজের চেক করা ব্যতিক্রম (
BadDataException) সংজ্ঞায়িত করা উচিত , নিয়মিত অভিব্যক্তির মতো উভয় স্ট্রিংকে বৈধতা দিন এবংBadDataExceptionএটি মেলে না তবে আমার নিক্ষেপ করা উচিত। - আপনার ধারণা?
আপডেট :
ভাবুন, এটি কোনও মুক্ত-উত্স কাঠামো নয়, যা আপনার কোনও কারণে ব্যবহার করা উচিত। আপনি পদ্ধতির স্বাক্ষরটি দেখুন এবং ভাবেন - "ঠিক আছে, এটি কখনই ছুড়ে না"। তারপরে, কোনও দিন, আপনি একটি ব্যতিক্রম পেয়েছিলেন। এটা কি স্বাভাবিক?
আপডেট 2 :
আমার মন্তব্য sum(String, String)একটি খারাপ নকশা বলে কিছু মন্তব্য আছে । আমি একেবারে একমত, তবে যারা বিশ্বাস করেন যে আমাদের ভাল ডিজাইন থাকলে মূল সমস্যাটি কখনই উপস্থিত হবে না, এখানে একটি অতিরিক্ত প্রশ্ন রয়েছে:
সমস্যার সংজ্ঞাটি এরকম: আপনার কাছে একটি ডেটা উত্স রয়েছে যেখানে সংখ্যা Stringগুলি হিসাবে সংরক্ষণ করা হয় । এই উত্সটি এক্সএমএল ফাইল, ওয়েব পৃষ্ঠা, ডেস্কটপ উইন্ডোতে 2 টি সম্পাদনা বাক্সের সাথে যাই হোক না কেন থাকতে পারে।
আপনার লক্ষ্য হ'ল এই যুক্তিকে বাস্তবায়ন করা যা এই 2 Stringটি গ্রহণ করে, সেগুলিতে রূপান্তর করে intএবং "যোগফলটি xxx" বলে বার্তা বাক্স প্রদর্শন করে message
আপনি এটি নকশা / বাস্তবায়নের জন্য কী পদ্ধতির ব্যবহার করেন তা বিচার্য নয়, আপনার অভ্যন্তরীণ কার্যকারিতার এই 2 পয়েন্ট থাকবে :
- এমন কোনও জায়গা যেখানে আপনি রূপান্তর
Stringকরেছেনint - এমন একটি জায়গা যেখানে আপনি 2
intটি যুক্ত করেন
আমার মূল পোস্টের প্রাথমিক প্রশ্নটি হ'ল:
Integer.parseInt()সঠিক স্ট্রিং উত্তীর্ণ হওয়ার প্রত্যাশা করে । আপনি যখনই কোনও খারাপ স্ট্রিংটি পাস করেন , তার অর্থ হল আপনার প্রোগ্রামটি ভুল (" আপনার ব্যবহারকারী একজন নির্বোধ" নয়)। আপনাকে কোডের টুকরোটি বাস্তবায়ন করতে হবে যেখানে একদিকে আপনার মুখ্য শব্দার্থবিজ্ঞানের সাথে Integer.parseInt () থাকে এবং অন্যদিকে ইনপুটটি ভুল হলে আপনাকে কেসগুলি ঠিক করতে হবে - শব্দার্থক শব্দাবলীর কথা বলা উচিত ।
সুতরাং, সংক্ষেপে: আমার কাছে কেবলমাত্র লাইব্রেরি থাকলে আমি কীভাবে শব্দার্থক প্রয়োগ করব ।