জাভা অ্যাপ্লিকেশনটিতে রানটাইম ব্যতিক্রম ছোঁড়া


12

আমি আমার ক্লায়েন্টের জন্য প্রযুক্তিগত নেতৃত্বের ভূমিকায় ডিজাইনার এন্টারপ্রাইজ জাভা অ্যাপ্লিকেশন ঠিকাদার হিসাবে কাজ করছি। অ্যাপ্লিকেশনটি শেষ ব্যবহারকারীরা ব্যবহার করবেন এবং একটি সমর্থন দল থাকবে যা আমরা ছাড়ার পরে অ্যাপ্লিকেশনটিকে সমর্থন করবে।

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

ব্যবসায়ের অ্যাপ্লিকেশনটিতে কোনও চেক না করা ব্যতিক্রম কখনও ছোঁড়ার দরকার কী?

রানটাইম ব্যতিক্রম সম্পর্কে অতীতে আমার অভিজ্ঞতা থেকে:

1) চেক না করা ব্যতিক্রমগুলি কোডটিকে অনির্দেশ্য করে তোলে কারণ তারা জাভাডকেও প্রদর্শিত হয় না।

২) ব্যবসায়ের অ্যাপ্লিকেশনটিতে চেক না করা ব্যতিক্রম ছুঁড়ে ফেলা বুদ্ধিমানের কারণ কারণ আপনি যখন এটি নিক্ষেপ করেন এবং এটি সরাসরি ব্যবহারকারীদের মুখের দিকে যায়, আপনি কীভাবে এটি ব্যবহারকারীকে ব্যাখ্যা করবেন? আমি প্রচুর ওয়েব অ্যাপ্লিকেশন দেখেছি যা দেখায় 500 -Internal Error. Contact Administratorযা শেষ ব্যবহারকারী বা অ্যাপ্লিকেশন পরিচালনা করতে সহায়তা দলকে কিছুই বোঝায় না।

3) রানটাইম ব্যতিক্রম ছোঁড়া ক্লাসের ব্যবহারকারীরা ব্যতিক্রমটিকে উত্স কোডের মধ্য দিয়ে ডিবাগ করতে এবং কেন ব্যতিক্রম নিক্ষেপ করা হয় তা দেখতে বাধ্য করে। এটি কেবল তখনই এড়ানো যায় যদি রানটাইম ব্যতিক্রমের জাভাদোকটি খুব ভালভাবে ডকুমেন্টেড হয়ে থাকে যা আমি মনে করি যে এটি কখনও মামলা হয় না।


সার্ভিস টায়ার কী তা আপনি ব্যাখ্যা করতে পারেন? স্তরটি কি ব্যবহারকারীর কাছ থেকে সবচেয়ে দূরে, বা ব্যবহারকারীর নিকটতম?
মনোজ আর

এই প্রশ্নটি কেন এসও-তে খাপ খায় না?
বার্জার ফ্রয়েড-হানসেন 25'13 '

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

6
চেক করা ব্যতিক্রমগুলি [...] জাভাডোকেও প্রদর্শিত হবে না। => আপনি @throwsট্যাগ দিয়ে নথিভুক্ত করলে তারা উপস্থিত হবে , যা উপায় দ্বারা একটি ভাল অনুশীলন।
Assylias

4
@ সুরেশকোয়া কার্যকর জাভা, আইটেম 62: প্রতিটি পদ্ধতি দ্বারা ছুঁড়ে দেওয়া সমস্ত ব্যতিক্রম দলিল করুন। এক্সট্রাক্ট: কোনও পদ্ধতি ফেলতে পারে এমন প্রতিটি চেক করা ব্যতিক্রম ডকুমেন্ট করতে জাভাদোক @throwsট্যাগ ব্যবহার করুন , তবে পদ্ধতি ঘোষণায় চেক করা ব্যতিক্রমগুলি অন্তর্ভুক্ত করার জন্য থ্রো কীওয়ার্ডটি ব্যবহার করবেন না।
Assylias

উত্তর:


13

চেক করা ব্যতিক্রমগুলি ভাষা ডিজাইনের ব্যর্থ ব্যয়। তারা আপনাকে অত্যন্ত ফাঁসযুক্ত বিমূর্ততা এবং নোংরা কোড রাখতে বাধ্য করে have তাদের যথাসম্ভব এড়ানো উচিত।

আপনার পয়েন্ট হিসাবে:

1) চেক করা ব্যতিক্রমগুলি কোডটি নোংরা করে তোলে এবং কম অনুমানযোগ্যও নয় কারণ তারা সর্বত্র প্রদর্শিত হয়

২) কীভাবে চেক করা ব্যতিক্রমটি ব্যবহারকারীকে আরও ভাল দেখানো হচ্ছে? চেক করা এবং চেক করা ব্যতিক্রমগুলির মধ্যে একমাত্র আসল পার্থক্য প্রযুক্তিগত এবং কেবল উত্স কোডকে প্রভাবিত করে।

3) স্ট্যাক ট্রেস কখনও শুনেছেন? তারা আপনাকে জানিয়ে দেয় যে ব্যতিক্রমটি কোথায় ছুঁড়েছে তা যাচাই করা বা চেক না করেই হোক। প্রকৃতপক্ষে, চেক করা ব্যতিক্রমগুলি ডিবাগিংয়ের জন্য খারাপ হতে থাকে কারণ তারা প্রায়শই মোড়ানো থাকে যা দীর্ঘতর এবং কুশ্রী স্ট্যাকের চিহ্নগুলিতে নিয়ে যায় বা এমনকি একত্রে হারিয়ে যায় কারণ মোড়কে ভুল করা হয়েছিল।

দুটি ধরণের ব্যতিক্রম রয়েছে: এগুলি "সাধারণত" ঘটে থাকে এবং সাধারণত যেখানে ঘটে থাকে তার খুব কাছেই পরিচালিত হয় এবং যা খুব ব্যতিক্রমী এবং খুব উচ্চ স্তরে সাধারণভাবে পরিচালিত হতে পারে (কেবলমাত্র বর্তমান ক্রিয়াটি বাতিল করে এবং লগ ইন / একটি ত্রুটি দেখান)।

চেক করা ব্যতিক্রমগুলি ভাষা সিনট্যাক্সের মধ্যে এই পার্থক্যটি বিন্যাসের সংজ্ঞায়িত করার পর্যায়ে রাখার চেষ্টা ছিল। এটির সাথে সমস্যাগুলি

  • পার্থক্যটি সত্যই কলারের উপর নির্ভর করে, ব্যতিক্রম ছুঁড়ে দেওয়ার কোড নয়
  • এটি একটি ব্যতিক্রমের অর্থগত অর্থের সাথে সম্পূর্ণরূপে অর্থেগোনাল, তবে এটি শ্রেণীর শ্রেণিবিন্যাসের সাথে বেঁধে দেওয়া আপনাকে দুটি মিশ্রিত করতে বাধ্য করে
  • ব্যতিক্রমগুলির পুরো বিষয়টিটি হ'ল আপনি স্থিরভাবে কোনও ত্রুটি হারিয়ে যাওয়ার বা মধ্যবর্তী স্তরে কোডটিকে দূষিত করার ঝুঁকি না নিয়ে তাদের ধরার কোন স্তরে সিদ্ধান্ত নিতে পারেন বা; চেক করা ব্যতিক্রমগুলি সেই দ্বিতীয় সুবিধাটি হারাবে।

১. ভালভাবে একটি চেক করা ব্যতিক্রমের ক্ষেত্রে, আপনি যদি জানতে পারবেন না যে কোনও কল যদি একটি চেক না হয়ে থাকতে পারে। ২. আপনি যখন বলেছিলেন "এটি সম্পূর্ণভাবে একটি ব্যতিক্রমের অর্থগত অর্থের দিক থেকে orthogonal, কিন্তু এটি শ্রেণীর শ্রেণিবিন্যাসের সাথে বেঁধে রাখার ফলে আপনি দুটি মিশ্রিত করতে বাধ্য হন", আমি মনে করি আপনি শ্রেণিক শ্রেণিবিন্যাসের পরিবর্তে কল শ্রেণিবদ্ধতা বলতে চেয়েছিলেন।
এলোমেলোভাবে অফফ্লাইটিংথিং

2
@ সুরেশ কোয়া: না, আমি শ্রেণি শ্রেণিবিন্যাস বলতে চাইছিলাম, এই ঘোষণার SQLException extends Exceptionঅর্থ হ'ল SQLExceptionডিবি অ্যাক্সেসের সাথে কোনও ত্রুটিযুক্ত হওয়ার কারণে একটি নিক্ষেপ করা বেছে নেওয়া মানে ব্যতিক্রমটি চেক করা হয়েছে। এবং আপনি জাভাদোকের মন্তব্যে চেক করা ব্যতিক্রমগুলি ঠিক সূক্ষ্মভাবে ডকুমেন্ট করতে পারেন। অন্যান্য সমস্ত ভাষার জন্য ভাল কাজ করে।
মাইকেল বর্গওয়ার্ট

1
@ মিশেলবার্গওয়ার্ট "চেক করা ব্যতিক্রমগুলি ভাষা ডিজাইনের ক্ষেত্রে ব্যর্থ ব্যয়", এটি কি আপনার ব্যক্তিগত মতামত না যদি আমি এই বিষয়ে আরও পড়তে চাই না। যে কোনও খাঁটি লিঙ্ক দুর্দান্ত সাহায্য করবে।
বিপিন

2
@ ভিপিন: এটি আমার ব্যক্তিগত মতামত, তবে অন্য অনেকেই যেমন ভাগ করে নেন , যেমন ব্রুস এক্কেল : মাইন্ডভিউ ডটকম / এটসি / ডিসকশনস / চেকড এক্সেক্সশনস - এবং জাভা চালু হওয়ার ২০ বছর পর থেকে অন্য কোনও ভাষা চেক করা ব্যতিক্রম গ্রহণ করে নি বলে কথা বলে নিজের জন্য ...
মাইকেল বর্গওয়ার্ট

2

আমার দৃষ্টিভঙ্গি হ'ল কোন ধরণের ব্যতিক্রম নিক্ষেপ করা হয় তা আপনার কোড কী করছে তার উপর নির্ভরশীল।

যখন আমি আশা করি তারা প্রায়শই ঘটতে পারে তখন আমি পরীক্ষিত ব্যতিক্রমগুলি ছুঁড়ে ফেলি (উদাহরণস্বরূপ ব্যবহারকারীরা ডজি ডেটা প্রবেশ করে) এবং আমি কলিং কোডটি পরিস্থিতিটি পরিচালনা করার আশা করি।

যখন আমার বিরল পরিস্থিতি হয় যা আমি কলিং কোডটি হ্যান্ডেল করার আশা করি না তখন আমি চেক করা / রানটাইম ব্যতিক্রমগুলি (প্রায়শই চেক করা হয় না) ফেলে দিই। উদাহরণ হ'ল এক ধরণের অদ্ভুত মেমরি সম্পর্কিত ত্রুটি হতে পারে যা আমি কখনই ঘটে বলে আশা করি না। আপনি যে অ্যাপ্লিকেশনটি নামিয়ে আনবেন বলে প্রত্যাশা করা হচ্ছে তা ত্রুটিযুক্ত নয়।

কোনও স্তরের সমর্থন ছাড়াই কোনও ব্যতিক্রম কোনও ব্যবহারকারীর সামনে উপস্থিত হওয়া উচিত। এমনকি যদি এটি কেবলমাত্র "দয়া করে কোনও ইমেলটিতে এই ত্রুটি ডাম্পটি কেটে পেস্ট করুন"। কোনও ত্রুটি রয়েছে বলে জানানো ছাড়া কোনও কিছুর বেশি বিরক্তিকর কিছু নেই, তবে এটি ঠিক করার জন্য তারা কী নিতে পারে তার কোনও বিবরণ বা পদক্ষেপ না দেওয়া হচ্ছে।

আমার অনুমান যে আপনি যে দর্শনটি উল্লেখ করেছেন তা দুটি উত্সের একটি থেকে আসে:

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

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

আমি আপনার দর্শনে একমত আপনি যে অ্যাপ্লিকেশনটি ব্যবহারকারীদের জন্য বিকাশ করছেন তাতে রানটাইম ব্যতিক্রম ছড়িয়ে দেওয়ার প্রয়োজন কী হবে?
র্যান্ডমোস্ট্যান্সঅফলাইভিংথিং

এছাড়াও, রানটাইম ব্যতিক্রম ছুঁড়ে ফেলা হলেও, আমি @Asslias এর নির্দেশিত সম্মেলনটি পছন্দ করি।
র্যান্ডমোস্ট্যান্সঅফলাইভিংহিং

1

আপনি যদি চেক করা রানটাইম ব্যতিক্রম না চান তবে আপনি জাভা কেন ব্যবহার করছেন? প্রায় সর্বত্র রানটাইম ব্যতিক্রম হওয়ার সম্ভাবনা রয়েছে - উল্লেখযোগ্যভাবে নলপয়েন্টারএক্সসেপশন, অ্যারিথমেটিক এক্সসেপশন, অ্যারেআইন্ডেক্সআউটআউটবাউন্ড ব্যতিক্রম ইত্যাদি etc.

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


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

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

1

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

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

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

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

অবশ্যই সেরা বিকল্পটি সম্পূর্ণরূপে ত্রুটি পরিস্থিতি মোকাবেলা করে ব্যতিক্রমটিকে পুরোপুরি পরিচালনা করা। আপনি যদি এটি করতে পারেন তবে সর্বদা এটি করুন! এমনকি এটির অর্থও হতে পারে যে আপনি ব্যতিক্রমটি লগ করতে এড়াতে পারেন।

একটি ব্যতিক্রম হ্যান্ডেল করার একটি উপায় হ'ল আরেকটি ব্যতিক্রম ছুঁড়ে দেওয়া যা সমস্যার উচ্চ-স্তরের বর্ণনা সরবরাহ করে (যেমন, " failed to initialize" পরিবর্তে " index out of bounds" " ")। আপনি যতক্ষণ ব্যতিক্রমের কারণ সম্পর্কে তথ্য হারাবেন না ততক্ষণ এটি একটি নিদর্শন; causeউচ্চ-স্তরের ব্যতিক্রমটি শুরু করতে বিশদ ব্যতিক্রমটি ব্যবহার করুন বা বিশদটি লগ করুন (উপরে আলোচনা হিসাবে)। লগিং সর্বাধিক উপযুক্ত যখন আপনি আন্তঃ-প্রক্রিয়া সীমানা অতিক্রম করতে চলেছেন যেমন আইপিসি কল, কারণ কোনও গ্যারান্টি নেই যে সংযোগের অন্য প্রান্তে নিম্ন-স্তরের ব্যতিক্রম শ্রেণি উপস্থিত থাকবে। অভ্যন্তরীণ সীমানা অতিক্রম করার সময় কোনও সংযুক্ত কারণ হিসাবে রাখা সবচেয়ে উপযুক্ত।

আপনি দেখতে পেলেন এমন অন্য প্যাটার্নটি হ'ল ক্যাচ-রিলিজ:

try {
    // ...
} catch (FooException e) {
    throw e;
}

এটি একটি বিরোধী-নিদর্শন না হয়ে থাকে যদি না আপনি অন্য catchক্লজগুলি থেকে টাইপ সীমাবদ্ধতা পেয়ে থাকেন যার অর্থ আপনি কেবল ব্যতিক্রমটিকে নিজের মতো করে যেতে দিতে পারবেন না। তারপরে এটি জাভার একটি কুৎসিত বৈশিষ্ট্য।

চেক করা ব্যতিক্রম এবং চেক করা ব্যতীত কোনও সত্য পার্থক্য নেই এই সত্যটি ছাড়াও যে আপনাকে অবশ্যই ক্রস পদ্ধতির সীমানা যাচাই করা ব্যতিক্রমগুলি ঘোষণা করতে হবে@throwsআপনার কোড দ্বারা ইচ্ছাকৃতভাবে ছুঁড়ে ফেলা হচ্ছে যদি আপনি জানেন তবে চেক করা ব্যতিক্রমগুলি ( জাভাদোকের মন্তব্য সহ) নথিভুক্ত করা এখনও ভাল ধারণা । ইচ্ছাকৃতভাবে নিক্ষেপ করবেন না java.lang.Errorবা এর সাবক্লাসগুলি (আপনি যদি কোনও জেভিএম বাস্তবায়ন না লিখে থাকেন)।

মতামত: একটি অপ্রত্যাশিত ত্রুটি মামলা সর্বদা আপনার কোডটিতে একটি বাগ প্রদর্শন করে। চেক করা ব্যতিক্রমগুলি হুমকিটি পরিচালনা করার একটি উপায় এবং যেখানে বিকাশকারীরা ত্রুটিযুক্ত মামলাগুলি পরিচালনা করার ঝামেলা এড়াতে ইচ্ছাকৃতভাবে চেক করা ব্যতিক্রমগুলি ব্যবহার করছেন, আপনি বেশ কিছু প্রযুক্তিগত debtণ তৈরি করছেন যা আপনাকে কিছুটা সময় সাফ করতে হবে have আপনি যদি শক্ত কোড চান। স্লোপি ত্রুটি হ্যান্ডলিং অযৌক্তিক (এবং ত্রুটি পরিচালনার দিকে তাকানো একটি প্রোগ্রামার সত্যই কতটা ভাল তা নির্ধারণ করার একটি ভাল উপায়)।


0

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

উদাহরণ হিসাবে,

যদি আপনার অ্যাপ্লিকেশন কোনও ফাইল বা ডাটাবেস থেকে ডেটা লোড করে। তারপর, ..

try {
  File data = new File(...);
  // parse file here
} catch (Exception ex) {
  throw new MissingDataFileException("data file not found");
}

কলার সর্বদা চেক করা মিসিংডাটাফাইএক্সসেপশন ধরতে পারে এবং তারপরে ডাটাবেস থেকে ডেটা লোড করার চেষ্টা করতে পারে।

try {
  Connection con = DriverManager.getConnection( host, username, password );
  // query data here
} catch (Exception ex) {
  throw new RuntimeException("better call Saul!");
}

1
শৈল 3 বছর আগে একটি গাড়ী দুর্ঘটনায় মারা যান। ব্যর্থ! ;-)
ডোনাল ফেলো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.