ত্রুটি পরিচালনা, ত্রুটি পরিচালনা, ত্রুটি পরিচালনা

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

পুনরুদ্ধারযোগ্য ব্যর্থতাগুলি এমন সমস্যা যা একজন বিকাশকারী তাদের শেষ থেকে সমাধান করতে পারে। উদাহরণস্বরূপ, যদি একটি কলে ব্যবহৃত একটি আইডি বৈধ না হয়, তাহলে API একটি invalid data বার্তা সহ একটি HomeException নিক্ষেপ করে৷ অ্যাপ ডেভেলপার তখন তাদের ক্যাশে থেকে সেই আইডি মুছে ফেলতে বা ব্যবহারকারীকে "কাঠামো পাওয়া যায়নি" এর মতো একটি বার্তা দেখাতে পারেন।

কীভাবে একজন পুনরুদ্ধারযোগ্য ব্যর্থতা পরিচালনা করতে পারে তার একটি উদাহরণ:

val result =
   try {
     homeManager.requestPermissions()
   } catch (e: HomeException) {
     PermissionsResult(
       PermissionsResultStatus.ERROR,
       "Got HomeException with error: ${e.message}",
     )
   }

হোম এপিআই-এর যেকোন পদ্ধতি একটি HomeException নিক্ষেপ করতে পারে, তাই আমরা সুপারিশ করি যে আপনি সমস্ত কলে HomeException ধরতে একটি try-catch ব্লক ব্যবহার করুন।

HomeException পরিচালনা করার সময়, কী ভুল হয়েছে তা জানতে এর code এবং message ক্ষেত্রগুলি পরীক্ষা করুন৷

যেকোনও পরিচালনা না করা ব্যতিক্রমের ফলে আপনার অ্যাপ ক্র্যাশ হয়ে যাবে।

নিম্নলিখিত টেবিলটি HomeException কোডগুলির অর্থ প্রদান করে যা আপনি সম্মুখীন হতে পারেন:

টেবিল: HomeException কোড
কোড অর্থ
ABORTED অপারেশন বাতিল করা হয়েছে। এটি সাধারণত দেখা যায় যখন একটি সঙ্গতি সংক্রান্ত সমস্যা যেমন একটি সিকোয়েন্স চেক ব্যর্থতা বা লেনদেন বাতিল।
ALREADY_EXISTS আপনি যে সংস্থান বা সত্তা তৈরি করার চেষ্টা করছেন তা ইতিমধ্যেই বিদ্যমান। এটি হতে পারে, উদাহরণস্বরূপ, একটি থার্মোস্ট্যাটের জন্য একটি নামকৃত সময়সূচী।
API_NOT_CONNECTED ক্লায়েন্ট একটি API থেকে একটি পদ্ধতি কল করার চেষ্টা করেছে যা সংযোগ করতে ব্যর্থ হয়েছে৷ এটি ঘটতে পারে যখন ডিভাইসটি অফলাইন থাকে বা আপনি যে APIটিকে কল করার চেষ্টা করছেন সেটি সমর্থন করে না৷
CANCELLED অপারেশনটি বাতিল করা হয়েছে, সাধারণত কলার দ্বারা।
DATA_LOSS পুনরুদ্ধারযোগ্য ডেটা ক্ষতি বা দুর্নীতি।
DEADLINE_EXCEEDED অপারেশন শেষ হওয়ার আগেই সময়সীমা শেষ হয়ে গেছে। সিস্টেমের অবস্থা পরিবর্তন করে এমন অপারেশনগুলির জন্য, অপারেশনটি সফলভাবে সম্পন্ন হলেও এই ত্রুটিটি ফেরত দেওয়া হতে পারে।
FAILED_PRECONDITION অপারেশনটি প্রত্যাখ্যান করা হয়েছে কারণ অপারেশনটি কার্যকর করার জন্য সিস্টেমটি প্রয়োজনীয় অবস্থায় নেই৷ উদাহরণস্বরূপ, আপনি এই বার্তাটি পেতে পারেন যদি আপনি একটি ওভেনে stop কল করেন যা ইতিমধ্যেই বন্ধ হয়ে গেছে৷
INTERNAL অভ্যন্তরীণ ত্রুটি. এর মানে হল যে অন্তর্নিহিত সিস্টেমের দ্বারা প্রত্যাশিত কিছু invariants ভেঙে গেছে। এই ত্রুটি কোড গুরুতর ত্রুটির জন্য সংরক্ষিত.
INVALID_ARGUMENT আপনি একটি যুক্তি প্রদান করেছেন যা মানগুলির প্রত্যাশিত পরিসরের বাইরে।
NOT_FOUND আপনি এমন একটি সত্তা বা সংস্থান নির্দিষ্ট করেছেন যা খুঁজে পাওয়া যাচ্ছে না। উদাহরণস্বরূপ, একটি মিডিয়া প্লেয়ার ডিভাইসে activateAudioTrack কল করার সময় একটি অস্তিত্বহীন ট্র্যাক আইডি উল্লেখ করা।
OUT_OF_RANGE বর্তমান সিস্টেমের অবস্থার উপর ভিত্তি করে একটি প্যারামিটার বৈধ পরিসীমা অতিক্রম করেছে৷ এই বার্তাটি ঘটে যখন মানটি সেই মানগুলির পরিসরের মধ্যে থাকে যা API কল সম্ভাব্যভাবে গ্রহণ করতে পারে, কিন্তু বর্তমান প্রেক্ষাপটে এর অর্থ হয় না৷
PERMISSION_DENIED আপনার কাছে নির্দিষ্ট অপারেশন চালানোর অনুমতি নেই। এই ত্রুটি কোডটি ব্যাখ্যা করা উচিত নয় যার অর্থ অনুরোধটি অন্যথায় বৈধ।
RESOURCE_EXHAUSTED কিছু সম্পদ শেষ হয়ে গেছে। উদাহরণস্বরূপ, এটি নিক্ষেপ করা যেতে পারে যখন কেউ একটি পোষা dispense ডিভাইসে কল করে এবং ইউনিটে আর কোন খাবার অবশিষ্ট থাকে না।
SDK_INITIALIZATION_MISSING_INFO SDK সম্পূর্ণরূপে আরম্ভ করা হয়নি। উদাহরণস্বরূপ, আপনি এই বার্তাটি পাবেন যদি আপনি এমন একটি বৈশিষ্ট্যের জন্য একটি TraitFactory পাওয়ার চেষ্টা করেন যা নিবন্ধিত হয়নি৷ সূচনা দেখুন।
UNAUTHENTICATED কলার সনাক্ত করা যাবে না বা অনুরোধের বৈধ প্রমাণীকরণ শংসাপত্র নেই।
UNAVAILABLE পরিষেবাটি অনুপলব্ধ৷ এটি সম্ভবত একটি ক্ষণস্থায়ী অবস্থা, যা ব্যাকঅফের সাথে পুনরায় চেষ্টা করে সংশোধন করা যেতে পারে। মনে রাখবেন যে অ-অদম্য ক্রিয়াকলাপগুলি পুনরায় চেষ্টা করা সর্বদা নিরাপদ নয়।
UNIMPLEMENTED অনুরোধ করা ক্রিয়াকলাপটি এই পরিষেবাতে বাস্তবায়িত, সমর্থিত বা সক্ষম করা হয়নি৷
UNKNOWN অজানা ত্রুটি. সাধারণভাবে বলতে গেলে, UNKNOWN প্রদর্শিত হয় যখন একটি ত্রুটির অবস্থা ঘটে যা অন্য কোনো ত্রুটি কোড ব্যবহার করে শ্রেণীবদ্ধ করা যায় না। উদাহরণস্বরূপ, এই ত্রুটিটি ফেরত দেওয়া হতে পারে যখন একটি বহিরাগত API থেকে প্রাপ্ত একটি স্ট্যাটাস মান যার মূল কারণ সম্পর্কে পর্যাপ্ত তথ্য নেই৷