কোটলিন চেক করা ব্যতিক্রমগুলিকে সমর্থন করে না। এটি ত্রুটি পরিচালনাকে সহজ করে এবং স্ট্রীমলাইন করে, কারণ আপনি শুধুমাত্র সেই ব্যতিক্রমগুলি পরিচালনা করতে বেছে নিতে পারেন যা সম্ভাব্য পুনরুদ্ধারযোগ্য। এবং যেহেতু আপনাকে প্রতিটি সম্ভাব্য ব্যতিক্রম স্পষ্টভাবে পরিচালনা করতে হবে না, আপনার কোডটি কম বিশৃঙ্খল এবং ফলস্বরূপ, এর প্রাথমিক উদ্দেশ্যের উপর আরও বেশি মনোযোগী থাকে।
পুনরুদ্ধারযোগ্য ব্যর্থতাগুলি এমন সমস্যা যা একজন বিকাশকারী তাদের শেষ থেকে সমাধান করতে পারে। উদাহরণস্বরূপ, যদি একটি কলে ব্যবহৃত একটি আইডি বৈধ না হয়, তাহলে 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
কোডগুলির অর্থ প্রদান করে যা আপনি সম্মুখীন হতে পারেন:
কোড | অর্থ |
---|---|
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 থেকে প্রাপ্ত একটি স্ট্যাটাস মান যার মূল কারণ সম্পর্কে পর্যাপ্ত তথ্য নেই৷ |