Kotlin: Exceptions — Базова інформація / Runtime / Compile time ☄️ (основи програмування)

Alexander Khyzhun
5 min readSep 15, 2022

--

Kotlin: Exception — що, де, коли?

📢 Дуже часто при роботі у вас будуть виникати ситуації, коли ваш код буде працювати не так як ви очікуєте. Такі ситуації частіше за все виникають через нехватку технічних глибинних знань в технологіях, які використовуються.

☝🏻 Це — нормально.

На сьогоднішній день програмістам треба знати over 100500 тем і кожну з них досконало пам’ятати і слідкувати за тим, як воно все розвивається і так далі, а це — фізично не можливо.

Це щось на кшталт бути найкращим у всіх видах спорту водночас, я не кажу, що це не можливо, але це дуже близько до неможливо.

Тому таке (exceptions) стається і це треба просто прийняти як факт і жити з цим далі 🤷🏻

Їх треба просто відловити і обробляти. Все. 💪🏻
Давайте розберемось з тим, що це таке.

Exceptions, exceptions, exceptions…

Давайте відразу розставимо всі крапки над і. Люди завжди вважають, що exception — це помилка і зараз я поясню чому.

Коли стається “Exception”, то програма, як правило, не готова такого і через це виникають помилки в програмах. Як правило це закінчується тип, що програма “падає”.

Звідси і виникає логічна послідовність, наче Exception це і є помилка: Code — допускається помилка → Exception → Error

Але це не так! 💥

Exceptions — це виключення (з правил), а помилка — Error ❗️

Будь ласка, не путайте їх і дивіться на це саме з такого кута.

☝🏻Саме тому, я так багато разів казав, що писати код — це як писати сценарій по якому ваша програма повинна працювати.

Якщо ви сказали як вона (програма) має себе поводити, коли Х = 1, 2, 3 і 5, але не вказали, що треба робити, коли Х = 4, то це не помилка, це виключення з правил.

Так, помилка в програмі (error) може статись, але це вже друга історія і це залежить від того, що ви робити. Бо може бути таке, що помилка і не станеться! 🪤

Що таке Exception?

Exception — це такий механізм в мовах програмування, який дозволяє перервати виконання програми за умови, що воно не було оброблено try-catch блоком або за допомогою if-else або when.

Exception — це взагалі клас, який наслідується від Throwable ☄️.

Наразі ми ще з вами не проходили це, я знаю, працюю над цим. В наступних темах пройдемось. Я не дарма спланував саме таку послідовність 😉

Exception містить в собі багато цікавої інформації, ось ключова:

  • message — повідомлення про виключення.
  • cause — Власне причина вашого виключення (optional)
  • stack trace — це стектрейс вашого виключення

Stack Trace — це щось типу історії виконання вашого кода до момента виключення. Покроково. Прям як шерлок холмс 🕵🏻‍♂️
Виглядає воно якось ось так:

Які є типи Exception?

Exceptions в Kotlin розділяють на 2 основні типи:

  • Runtime — це такий тип Exceptions, що виникають під час виконання програми, тобто це те, що не врахувалось, це не правильно написала логіка, не правильне конвертування даних і так далі. Тобто, це — логічні помилки в програмі.
  • Compile Time — це exceptions, які вже відомі для компілятора на моменті зборки вашого проекта в щось, що буде запускатись на чомусь. Наприклад, якщо ви пишите під Android і ваш код збирається в Bytecode для JVM. Тобто, це — механічні помилки в програмі.

Це важливо розумію і вміти розділяти, оскільки інколи буває таке, що ви напишите код і будете думати, що все ок, а потім виявиться, де в деякий ситуаціях (дуже не частих ситуаціях) ваш код буде себе поводити не так як ви цього очікуєте. Ось в такі момента наші славні QA інженери заводять нам баги (bugs), щоб ми щось виправляли 😉

Взагалі, так як програмування як річ — не нова, то програмісти ви навчились класифікувати Exceptions і виділили деякі з них в уже звичні для багатьох класи. Ось великий перелік того, що наразі є: клік.

Не бачу сенсу всі їх сюди виписувати, кому цікаво ознайомтесь 😉

Передам основну суть:

У нас є інтерфейс Throwable ☄️, який нам дає можливість власе “кидати” наші exceptions.

Далі у нас йде батьківський клас Exception 💁🏻‍♂️ (він як Бандера, але в всесвіті програмування).

В нього підклас/child/наслідник — RuntimeException 👶🏻.

Всі інші Exceptions — це вже наслідники або Exception, або RuntimeException.

Знати їх на пам’ять не треба та і нічого вам це не дасть. Просто зрозумійте суть. Це вам допоможе розбиратись з ними тоді, коли вони будуть виникати.

Як правило, з exceptions розмова дуже проста. Коли вони виникають, ви їх “ловите” (тобто вони стаються), потім ви їх намагаєтесь зрозуміти і виправляєте ✅

🎬 Ось мій канал, де будуть всі відео на різні теми в програмуванні:

📚 Ось мій Patreon, де будуть всі матеріали в текстовому форматі, додаткова інфа, розбір приклдів, домашні завдання, ІТ-словник, і тд:

Окрім цього, там є різні пропозиції, наприклад, можемо займатись 1х1, можу допомогти зробити резюме, проведу співбесіду і так далі.

🎬 Весь контент, який я роблю — це все мій особистий досвід.
Я пишу/знімаю все сам і ділюсь з вами корисною інформацією, яку ніхто не розповідає, тому підтримайте підпискою ❤️

🙂 На цьому у мене — все!
👉🏻 Ставте лексуси, підписуйтесь і будьте умнічками.

Якщо я правий — похваліть, якщо ні — посваріть.
Но в любому випадку не забудьте дати фідбек 😉

Успіхів! 🇺🇦🦄

ios, android, it, programming, software, engineer, инженер, базы данных, database, code, backend, frontend, webdevelopment, scrum, jira, HR, recruiter, coding, flutter, react, html, css, angular, kotlin, java, python, php, c++, c#, swift, reactnative, mobile, vlog, tutorials, how to, git, QA, BA, алгоритмы, скрам, джира, айти, робота, іт, програмування, алгоритми, розробка, інженерія, фронтенд, бекенд, андроїд, дизайн, кодити, кодінг, флатер, котлін, джава, уроки, навчання, менеджмент
image for preview

--

--

Alexander Khyzhun
Alexander Khyzhun

Written by Alexander Khyzhun

🧙🏻‍♂️ Software Wizard 🎬 Tech blogger 🎌 JDM 🎷 Lofi artist 🏊🏻‍♂️ Swimmer

No responses yet