Kotlin চেক করা ব্যতিক্রম সমর্থন করে না। এটি ত্রুটি পরিচালনাকে সহজ এবং স্ট্রিমলাইন করে, কারণ আপনি কেবলমাত্র সেই ব্যতিক্রমগুলি পরিচালনা করতে পারেন যা সম্ভাব্যভাবে পুনরুদ্ধারযোগ্য। এবং যেহেতু আপনাকে প্রতিটি সম্ভাব্য ব্যতিক্রম স্পষ্টভাবে পরিচালনা করতে হবে না, তাই আপনার কোডটি কম বিশৃঙ্খল থাকে এবং ফলস্বরূপ, এর প্রাথমিক উদ্দেশ্যের উপর আরও বেশি মনোযোগী থাকে।
 পুনরুদ্ধারযোগ্য ব্যর্থতা হল এমন সমস্যা যা একজন ডেভেলপার তাদের দিক থেকে সমাধান করতে পারেন। উদাহরণস্বরূপ, যদি কোনও কলে ব্যবহৃত কোনও আইডি বৈধ না হয়, তাহলে API একটি invalid data বার্তা সহ একটি HomeException ছুঁড়ে দেয়। অ্যাপ ডেভেলপার তারপর তাদের ক্যাশে থেকে সেই আইডিটি সরিয়ে ফেলতে পারেন অথবা ব্যবহারকারীকে "কাঠামো খুঁজে পাওয়া যায়নি" এর মতো একটি বার্তা দেখাতে পারেন।
পুনরুদ্ধারযোগ্য ব্যর্থতা কীভাবে মোকাবেলা করা যেতে পারে তার একটি উদাহরণ:
val result =
   try {
     homeManager.requestPermissions()
   } catch (e: HomeException) {
     PermissionsResult(
       PermissionsResultStatus.ERROR,
       "Got HomeException with error: ${e.message}",
     )
   }
 Home API গুলির যেকোনো পদ্ধতিতে HomeException ব্যবহার করা যেতে পারে, তাই আমরা আপনাকে সমস্ত কলে HomeException ধরার জন্য একটি try-catch ব্লক ব্যবহার করার পরামর্শ দিচ্ছি।
 HomeException পরিচালনা করার সময়, কী ভুল হয়েছে তা জানতে এর error.code এবং error.message ক্ষেত্রগুলি পরীক্ষা করুন। সাব-এরর কোডগুলিও থাকতে পারে, তাই getSubErrorCodes() পদ্ধতিতে কল করুন এবং ফলাফলটি পরীক্ষা করুন।
যেকোনো অপ্রয়োজনীয় ব্যতিক্রমের ফলে আপনার অ্যাপ ক্র্যাশ হয়ে যাবে।
 নিম্নলিখিত টেবিলে আপনি যে HomeException কোডগুলির সম্মুখীন হতে পারেন তার অর্থ প্রদান করা হয়েছে:
| কোড | অর্থ | 
|---|---|
| ABORTED | অপারেশনটি বাতিল করা হয়েছিল, সাধারণত সিকোয়েন্সার চেক ব্যর্থতা বা লেনদেন বাতিলের মতো একটি কনকারেন্সি সমস্যার কারণে। | 
| ALREADY_EXISTS | ক্লায়েন্ট যে সত্তা তৈরি করার চেষ্টা করেছিল, উদাহরণস্বরূপ একটি ফাইল বা ডিরেক্টরি, ইতিমধ্যেই বিদ্যমান। | 
| API_NOT_CONNECTED | ক্লায়েন্ট এমন একটি API থেকে একটি পদ্ধতিতে কল করার চেষ্টা করেছিল যা সংযোগ করতে ব্যর্থ হয়েছিল। এটি তখন ঘটতে পারে যখন ডিভাইসটি অফলাইন থাকে অথবা ক্লায়েন্ট যে API কল করার চেষ্টা করেছিল সেটি সমর্থন করে না। | 
| CANCELLED | অপারেশনটি বাতিল করা হয়েছিল, সাধারণত কলকারীর দ্বারা। | 
| COMMAND_FAILED | কমান্ডটি কার্যকর করা যায়নি। আরও বিস্তারিত জানার জন্য সাব এরর কোডগুলি দেখুন। | 
| CURSOR_WINDOW_NOT_SUPPORTED | একটি পদ্ধতি ডাকা হয়েছিল যা একটি CursorWindowব্যবহার করে, কিন্তু একটিCursorWindowহয় সক্রিয় নয় অথবা বর্তমান প্রেক্ষাপটে সমর্থিত নয়। | 
| DATA_LOSS | অপ্রত্যাশিত তথ্য ক্ষতি বা দুর্নীতি ঘটেছে। | 
| DEADLINE_EXCEEDED | অপারেশনটি সম্পূর্ণ হওয়ার আগেই সময়সীমা শেষ হয়ে গেছে। সিস্টেমের অবস্থা পরিবর্তনকারী অপারেশনগুলির জন্য, অপারেশনটি সফলভাবে সম্পন্ন হলেও এই ত্রুটিটি ফিরে আসতে পারে। | 
| DECOMMISSIONING_INELIGIBLE | ডিভাইসটি ডিকমিশন করার যোগ্য না হওয়ায় ডিকমিশনিং ব্যর্থ হয়েছে। | 
| FAILED_PRECONDITION | অপারেশনটি বাতিল করা হয়েছে কারণ সিস্টেমটি অপারেশনটি সম্পাদনের জন্য প্রয়োজনীয় অবস্থায় নেই। উদাহরণস্বরূপ, যদি OvenCavityOperationalStateTraitএরstopকমান্ডটি ইতিমধ্যেই বন্ধ থাকা ওভেনে কল করা হয় তবে আপনি এই বার্তাটি পেতে পারেন। | 
| INTERNAL | অভ্যন্তরীণ ত্রুটি। এর অর্থ হল অন্তর্নিহিত সিস্টেম দ্বারা প্রত্যাশিত কিছু ইনভেরিয়েন্ট ভেঙে গেছে। এই ত্রুটি কোডটি গুরুতর ত্রুটির জন্য সংরক্ষিত। | 
| INVALID_ARGUMENT | ক্লায়েন্ট এমন একটি যুক্তি প্রদান করেছেন যা প্রত্যাশিত মানের সীমার বাইরে। | 
| INVALID_DATA_HOLDER | ডেটা ধারকটি অবৈধ। | 
| NOT_FOUND | কোনও অনুরোধকৃত সত্তা, যেমন একটি ফাইল বা ডিরেক্টরি, খুঁজে পাওয়া যায়নি। যদি ব্যবহারকারীদের একটি সম্পূর্ণ শ্রেণীর জন্য কোনও অনুরোধ প্রত্যাখ্যান করা হয়, যেমন ধীরে ধীরে বৈশিষ্ট্য রোলআউট বা নথিভুক্ত নয় এমন অ্যালোলিস্ট, তাহলে NOT_FOUNDব্যবহার করা যেতে পারে। যদি ব্যবহারকারীদের একটি শ্রেণীর মধ্যে কিছু ব্যবহারকারীর জন্য কোনও অনুরোধ প্রত্যাখ্যান করা হয়, যেমন ব্যবহারকারী-ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ, তাহলেPERMISSION_DENIEDব্যবহার করতে হবে। | 
| OUT_OF_RANGE | বৈধ পরিসর অতিক্রম করে অপারেশনটি করার চেষ্টা করা হয়েছিল, যেমন end-of-fileদিকে অনুসন্ধান করা বা পড়া।INVALID_ARGUMENTবিপরীতে, এই ত্রুটিটি এমন একটি সমস্যা নির্দেশ করে যা সিস্টেমের অবস্থা পরিবর্তন হলে ঠিক করা যেতে পারে। | 
| PERMISSION_DENIED | কলকারীর নির্দিষ্ট ক্রিয়াকলাপটি সম্পাদন করার অনুমতি নেই। কিছু রিসোর্স ক্লান্ত করার কারণে প্রত্যাখ্যানের ক্ষেত্রে PERMISSION_DENIEDব্যবহার করা উচিত নয় (এই ত্রুটিগুলির জন্যRESOURCE_EXHAUSTEDব্যবহার করুন)। যদি কলকারীকে সনাক্ত করা না যায় তবেPERMISSION_DENIEDব্যবহার করা উচিত নয় (এই ত্রুটিগুলির জন্যUNAUTHENTICATEDব্যবহার করুন)। এই ত্রুটি কোডটি বোঝায় না যে অনুরোধটি বৈধ বা অনুরোধ করা সত্তা বিদ্যমান বা অন্যান্য পূর্বশর্ত পূরণ করে। | 
| RESOURCE_EXHAUSTED | কিছু রিসোর্স শেষ হয়ে গেছে, সম্ভবত প্রতি ব্যবহারকারীর কোটা পূরণ হয়ে যাওয়ার কারণে অথবা পুরো ফাইল সিস্টেমে জায়গা শেষ হয়ে যাওয়ার কারণে। উদাহরণস্বরূপ, যদি একটি পোষা প্রাণী-ফিডার ডিভাইসে DispenseTraitএরdispenseকমান্ডটি কল করা হয় কিন্তু ইউনিটে আর কোনও খাবার অবশিষ্ট না থাকে তবে এই ত্রুটিটি ঘটতে পারে। | 
| SDK_INITIALIZATION_MISSING_INFO | সমস্ত প্রয়োজনীয় তথ্য ছাড়াই SDK চালু করা হয়েছিল। উদাহরণস্বরূপ, যদি ক্লায়েন্ট একটি প্রদত্ত বৈশিষ্ট্য ID এর জন্য একটি TraitFactoryপেতে চেষ্টা করে কিন্তু SDK চালু করার সময় বৈশিষ্ট্যটি অন্তর্ভুক্ত না করা হয় তবে এই ত্রুটিটি দেখা যায়। Android এ হোম চালু করুন দেখুন। | 
| UNAUTHENTICATED | কলকারীকে শনাক্ত করা যাচ্ছে না অথবা অনুরোধটির বৈধ প্রমাণীকরণ শংসাপত্র নেই। | 
| UNAVAILABLE | পরিষেবাটি অনুপলব্ধ। এটি সম্ভবত একটি ক্ষণস্থায়ী অবস্থা, যা ব্যাকঅফ দিয়ে পুনরায় চেষ্টা করে সংশোধন করা যেতে পারে। মনে রাখবেন যে অ-ইডেম্পটেন্ট অপারেশনগুলি পুনরায় চেষ্টা করা সবসময় নিরাপদ নয়। | 
| UNIMPLEMENTED | অনুরোধ করা ক্রিয়াকলাপটি এই পরিষেবাতে বাস্তবায়িত, সমর্থিত বা সক্ষম করা হয়নি। | 
| UNKNOWN | অজানা ত্রুটি। UNKNOWNতখন দেখা দেয় যখন এমন কোনও ত্রুটির অবস্থা দেখা দেয় যা অন্য কোনও ত্রুটি কোড ব্যবহার করে শ্রেণীবদ্ধ করা যায় না। উদাহরণস্বরূপ, যখন কোনও বহিরাগত API থেকে প্রাপ্ত একটি স্থিতি মানের মূল কারণ সম্পর্কে পর্যাপ্ত তথ্যের অভাব থাকে তখন এই ত্রুটিটি ফেরত পাঠানো হতে পারে। | 
| WRITE_FAILED | লেখাটি কার্যকর করা যায়নি। আরও বিস্তারিত জানার জন্য সাব এরর কোডগুলি পরীক্ষা করুন। |