Kotlin: Exceptions — Базова інформація / Runtime / Compile time ☄️ (основи програмування)
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, можу допомогти зробити резюме, проведу співбесіду і так далі.
🎬 Весь контент, який я роблю — це все мій особистий досвід.
Я пишу/знімаю все сам і ділюсь з вами корисною інформацією, яку ніхто не розповідає, тому підтримайте підпискою ❤️
🙂 На цьому у мене — все!
👉🏻 Ставте лексуси, підписуйтесь і будьте умнічками.
Якщо я правий — похваліть, якщо ні — посваріть.
Но в любому випадку не забудьте дати фідбек 😉
Успіхів! 🇺🇦🦄