ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ Π½Π° Android?

Как ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» событий Π½Π° АндроидС?

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСйствия

Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Ρ„Π°ΠΉΠ» Π½Π° Π°Π½Π΄Ρ€ΠΎΠΈΠ΄?

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»Ρ‹ Π°Π½Π΄Ρ€ΠΎΠΈΠ΄?

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ слуТСбный Π½ΠΎΠΌΠ΅Ρ€ *#9900#. Π’Π΅Π»Π΅Ρ„ΠΎΠ½ ΠΏΡ€ΠΈ этом Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ Π·Π²ΠΎΠ½ΠΈΡ‚, Π·Π°Ρ‚ΠΎ Π½Π° экранС появляСтся слуТСбноС мСню. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² Π½Ρ‘ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡƒΠ½ΠΊΡ‚, Delete dumpstate/logcat, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ OK. Всё.

Как ΡΠ½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ Π² Андроид студио?

Для Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ способа Π½ΡƒΠΆΠ½ΠΎ:

Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ LogCat Π² Android Studio?

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ Alt + 6 Π² Windows ΠΈΠ»ΠΈ CMD + 6 Π½Π° Mac. А ΠΊΠ°ΠΊ насчСт Linux? Π’ AndroidStudio 3.4: View-> ToolWindows-> LogCat.

Π“Π΄Π΅ хранятся ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Android?

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π» ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ?

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π½Π° Android

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ систСмный ΠΆΡƒΡ€Π½Π°Π»?

систСмный ΠΆΡƒΡ€Π½Π°Π» (Ρ„Π°ΠΉΠ») β€” РСгистрируСт события ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, Π° Ρ‚Π°ΠΊΠΆΠ΅ особыС дСйствия ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ снятиС Π»ΠΎΠ³ΠΎΠ²?

Π‘Π½ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΏΠΎ записи ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ» для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° этих Π΄Π°Π½Π½Ρ‹Ρ…. Π›ΠΎΠ³ΠΈ ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²: Π’ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. НапримСр, для Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы ΠΊΠ»ΠΈΠΌΠ°Ρ‚Π° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Crash Log TXT?

txt> фиксируСтся врСмя возникновСния Π²Π°ΠΆΠ½Ρ‹Ρ… событий ΠΈ ΠΈΡ… ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС. Π›ΠΎΠ³-Ρ„Π°ΠΉΠ» crash. txt> содСрТит Π² сСбС врСмя возникновСния ошибок ΠΈ ΠΈΡ… ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π»ΠΎΠ³?

Π›ΠΎΠ³ΠΈ (Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Ρ‹) β€” это Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвСра ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ заносятся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Иногда Ρ‚Π°ΠΊΠΆΠ΅ употрСбляСтся русскоязычный Π°Π½Π°Π»ΠΎΠ³ понятия β€” ΠΆΡƒΡ€Π½Π°Π».

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ старыС Ρ„Π°ΠΉΠ»Ρ‹ обновлСния Π°Π½Π΄Ρ€ΠΎΠΈΠ΄?

Π£Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°ΠΏΠ΄Π΅ΠΉΡ‚Ρ‹ встроСнных Π² Android ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ – Google Chrome, Play Market.
…
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ

МоТно Π»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»Ρ‹?

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ мСсто Π½Π° дискС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Π§Π°Ρ‰Π΅ всСго мСсто Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ log Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ², совСтников ΠΈ история ΠΊΠΎΡ‚ΠΈΡ€ΠΎΠ²ΠΎΠΊ. Для ΠΈΡ… удалСния Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄Π°Π½Π½Ρ‹Ρ… МВ, ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹: … logs*.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС слСды прилоТСния Android?

Кэш ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятого прилоТСния: Π·Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² диспСтчСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ («Настройки» β†’ Β«ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ» β†’ Β«ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС прилоТСния»), Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· списка, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» Β«Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Β» ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ кэш».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Android: Π»ΠΎΠ³Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π₯ΠΎΡ‡Ρƒ Π½Π°Ρ‡Π°Ρ‚ΡŒ нСбольшой Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ прилоТСния ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Одно Π΄Π΅Π»ΠΎ β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, LogCat Π² Android Studio (Ссли Π²Ρ‹ ΠΈΠ· Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ поТСстчС β€” ΠΌΠΎΠΆΠ½ΠΎ распСчатку Π² консоли ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ adb), ΠΈ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠ΅ β€” Π»ΠΎΠΌΠ°Ρ‚ΡŒ Π³ΠΎΠ»ΠΎΠ²Ρƒ Π½Π°Π΄ вопросом ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρƒ вас всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° всСм ΠΏΠ°Ρ€ΠΊΠ΅ тСстовых устройств, Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ТалуСтся Π½Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. ΠšΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠ΅ β€” Π²ΠΈΠ΄Π΅Ρ‚ΡŒ своими Π³Π»Π°Π·Π°ΠΌΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ происходящСго (ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ β€” для ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ это Π·Π΅Π»Π΅Π½Ρ‹Π΅ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹, Π° для ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ β€” ΠΆΠ΅Π½Ρ‰ΠΈΠ½Π° Π² красном?)

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° нСсколько частСй, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β€” сбор ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ², способ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ FileProvider, Π½Ρƒ ΠΈ нСбольшой helper класс для создания писСм с Π°Ρ‚Ρ‚Π°Ρ‡Π°ΠΌΠΈ. Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ.

Π‘Π±ΠΎΡ€ ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ².

ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ System.out.println, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ β€” статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Log. Π― с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΡ€ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ написанию своСго класса для распСчатки Π»ΠΎΠ³ΠΎΠ². Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ расскаТу ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это ΠΏΡ€ΠΎΡ‰Π΅. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, для отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² процСссС выполнСния прилоТСния я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΊΡƒ. И Π²ΠΎΡ‚ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» β€” Π·Π°Ρ‡Π΅ΠΌ Ρ‚Ρ‹ пишСшь постоянно Log.i(MY_TAG, Β«infoΒ») Ссли ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· этой Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΎΠ΄Π½Ρƒ ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ?

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ логгирования. Π­Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ упираСтся Π² Π½Π°ΡˆΡƒ Π·Π°Π΄Π°Ρ‡Ρƒ β€” Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² Π² Ρ„Π°ΠΉΠ»Π°Ρ…. МоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ Ρ‚ΠΎ: Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ имя Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Log.i / Log.e / ΠΏΡ€ΠΎΡ‡., ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ лишний Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‡Ρ‚ΠΎ Π»ΠΈ для этого? НСкрасиво всС это ΠΊΠ°ΠΊ-Ρ‚ΠΎ.

Π›Π°Π΄Π½ΠΎ, довольно Π»ΠΈΡ€ΠΈΠΊΠΈ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π»ΡƒΡ‡ΡˆΠ΅ взглянСм Π½Π° класс Diagnostics.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² LogCat с Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ, достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Иногда ΠΌΠ½Π΅ хочСтся Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…. И с ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈΠ»ΠΈ значСниями ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ρ‚ΡƒΡ‚ Π²Π°ΠΆΠ½ΠΎ для мСня β€” Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ производится Π²Ρ‹Π·ΠΎΠ². Π’ΠΎΠ³Π΄Π° я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ

Diagnostics.i(this, β€œonCreate w/param1 = β€œ + param1);

Π³Π΄Π΅ this β€” это экзСмпляр класса Caller. НапримСр, для MainActivity Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

03–29 12:31:53.203 16072–16072/com.isidroid.platform I/Diagnostics: MainActivity.onCreate w/param1 = 200

И всС сразу становится понятно β€” ΠΊΡ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈ Π³Π΄Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Как Π²Ρ‹ ΡƒΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π² классС Diagnostics Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ β€” createLog ΠΈ appendLog. ΠžΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, я Π΄ΡƒΠΌΠ°ΡŽ, Π½Π΅ стоит β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ создаСт Ρ„Π°ΠΉΠ», Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” добавляСт Π² Π½Π΅Π³ΠΎ строку. Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠΈΠ»ΠΈ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ лСнится Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΡƒΡ‚ΠΎΡ‡Π½ΡŽ β€” appendLog создаСт Ρ„Π°ΠΉΠ», Ссли Π΅Π³ΠΎ Π½Π΅ сущСствуСт, Π° createLog всСгда создаСт Π½ΠΎΠ²Ρ‹ΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ лишнСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ‚Π°ΠΌ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΎΡΡŒ.

Π€Π°ΠΉΠ»Ρ‹ хранятся Π² cache Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, которая, ΠΊ слову, нСдоступна для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Ρƒ, Ссли Ρƒ вас Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ Π½Π΅ Ρ€ΡƒΡ‚ΠΎΠ²Π°Π½, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ).

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° распСчатки Π»ΠΎΠ³Π° ΠΈ хранСния Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

НадСюсь, это выглядит просто Π² использовании.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния

Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π²Ρ‹ΡˆΠ΅, наши Ρ„Π°ΠΉΠ»Ρ‹ для Π»ΠΎΠ³Π° хранятся Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚ Ρ‡ΡƒΠΆΠΈΡ… Π³Π»Π°Π· ΠΏΠ°ΠΏΠΊΠ΅. Она Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π°, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ File.getAbsolutePath(), Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠΈΡ‚Π΅ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ.

На ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΊ Π½Π°ΠΌ мчится FileProvider, Π΄Ρ€ΡƒΠ·ΡŒΡ!

Π’ΠΎΠΎΠ±Ρ‰Π΅, Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ отличная ΡΡ‚Π°Ρ‚ΡŒΡ (ΠΎΠ½Π° ΠΆΠ΅ β€” пошаговая инструкция) Π½Π° эту Ρ‚Π΅ΠΌΡƒ β€” Setting Up File Sharing, Π½ΠΎ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ StackOverFlow ΠΈ isidroid.com, я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Π²Ρ‹ΠΆΠΈΠΌΠΊΡƒ ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ с ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

2. Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, доступныС для ΡˆΠ°Ρ€ΠΈΠ½Π³Π°. Для этого создаСм Ρ„Π°ΠΉΠ» res/xml/cache_file_paths ΠΈ для нашСго ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° заполняСм Π΅Π³ΠΎ.
ΠšΠΎΠ½Π΅Ρ†.

НСт, ΠΏΡ€Π°Π²Π΄Π°, это всС.

На самом Π΄Π΅Π»Π΅ это довольно ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ это всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ β€” Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° писСм с Π»ΠΎΠ³Π°ΠΌΠΈ.

ΠœΡ‹ с Π²Π°ΠΌΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π΄Π΅Π»ΠΎ Π·Π° ΠΌΠ°Π»Ρ‹ΠΌ. Π’ΠΎΠΎΠ±Ρ‰Π΅, созданиС намСрСния (intent) для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ писСм β€” это довольно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ Π½Π΅Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ…Π΅Π»ΠΏΠ΅Ρ€. Но с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ‡Π΅ΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² вашСй Activity / Fragment, Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΈ Π½Π΅Ρ‚, Π²Π΅Ρ€Π½ΠΎ?

Π“ΠΎΡ€Π°Π·Π΄ΠΎ симпатичнСС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ (builder) Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ΠΆΠ΅Π»ΠΈ условия, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ лишниС Ρ†ΠΈΠΊΠ»Ρ‹. Π― Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ± это Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс (кстати, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ я Ρ€Π°Ρ‚ΡƒΡŽ Π·Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ прСдставлСния ΠΎΡ‚ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ).

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ сразу ΠΊ сути. Π‘Π½Π°Ρ‡Π°Π»Π° я ΠΏΠΎΠΊΠ°ΠΆΡƒ класс (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ глядя, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ), Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π³ΠΎ использования. ΠŸΠΎΠ΅Ρ…Π°Π»ΠΈ!

Π“Π΄Π΅ this β€” это Activity.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Β«Ρ€Ρ‹Π±ΡƒΒ» для тСкста письма, Π½ΠΎ я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ buildContent, Ρ€Π°ΡΡˆΠΈΡ€ΡΡ ΠΈΡ… ΠΏΡ€ΠΈ нСобходимости. МоТно ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΈΠ·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Β«Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Β» для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ этих Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ класса FeedbackHelper, Π½ΠΎ Π»ΠΈΡ‡Π½ΠΎ для мСня нСобходимости Π² этом Π½Π΅ было… Π§Ρ‚ΠΎ Π΄ΠΎ вас, Ρ‚ΠΎ Π΄Π΅Ρ€Π·Π°ΠΉΡ‚Π΅!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π“Π°ΠΉΠ΄ ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Android-прилоТСния: ΠΈΡ‰Π΅ΠΌ Π±Π°Π³ΠΈ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π»ΠΎΠ³ΠΈ

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Иногда Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ послС запуска. НапримСр, ΠΊΠΎΠ΄ компилируСтся, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ запускаСтся, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄Π°Π»Ρ‘ΠΊ ΠΎΡ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ: ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π²Π΄Ρ€ΡƒΠ³ появляСтся какая-Ρ‚ΠΎ ошибка (Π±Π°Π³). Π’ Ρ‚Π°ΠΊΠΈΡ… случаях приходится Β«Π·Π°ΠΏΠ°ΡΠ°Ρ‚ΡŒΡΡ Π»ΠΎΠ³Π°ΠΌΠΈΒ», Β«Π±Ρ€Π°Ρ‚ΡŒ Π² Ρ€ΡƒΠΊΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΒ» ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ ошибки.

Часто процСсс поиска ΠΈ исправлСния Π±Π°Π³Π° состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… шагов:

Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π°Ρ‘Ρ‚, Ρ‚ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто ошибки Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ (ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ) β€” инструмСнт срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π»ΠΎΠ³ΠΈ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ΠΎΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм простоС тСстовоС (ΠΈ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ даст Π½Π°ΠΌ всС возмоТности для поиска ошибок.

Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сравниваСт Π΄Π²Π° числа. Если числа Ρ€Π°Π²Π½Ρ‹, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Β«Π Π°Π²Π½ΠΎΒ», ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Начнём с простых шагов:

Нам автоматичСски ΠΎΡ‚ΠΊΡ€ΠΎΡŽΡ‚ΡΡ Π΄Π²Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ: activity_main.xml ΠΈ MainActivity.java. Π‘Π½Π°Ρ‡Π°Π»Π° нарисуСм ΠΌΠ°ΠΊΠ΅Ρ‚: просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ всё, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² activity_main.xml, Π½Π° ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅:

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΆΠΈΠ²ΠΈΠΌ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π² MainActivity этот ΠΊΠΎΠ΄:

Π’ этом ΠΊΠΎΠ΄Π΅ всё просто:

Запустим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π²Π΅Π΄Ρ‘ΠΌ Π±ΡƒΠΊΠ²Ρ‹ вмСсто чисСл:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

НаТмём Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΏΠ°Π΄Ρ‘Ρ‚! ВрСмя Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²Π½ΠΈΠ·Ρƒ слСва Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«6: LogcatΒ» ΠΈ Π²ΠΈΠ΄ΠΈΠΌ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ просто: Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ красный тСкст ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сообщСниС систСмы. Π’ нашСм случаС это java.lang.NumberFormatException: For input string: «f». Π£ΠΊΠ°Π·Π°Π½ Ρ‚ΠΈΠΏ ошибки NumberFormatException, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° какая-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ числа. И Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: For input string: «f». Π’Π²Π΅Π΄Π΅Π½ΠΎ β€œf”. Π£ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΆΠ΄Ρ‘Ρ‚ число, Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π΅ΠΉ символ. Π”Π°Π»Π΅Π΅ Π² красном тСкстС Π²ΠΈΠ΄Π½ΠΎ ΠΈ ссылку Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ строку: at com.example.appdebugging.MainActivity$1.onClick(MainActivity.java:26). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ onClick класса MainActivity, строка 24. МоТно просто ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ ссылкС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ строку:

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ parseInt ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числовыС значСния, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅! Π”Π°ΠΆΠ΅ Π² Π΅Π³ΠΎ описании это сказано β€” ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ошибки этот ΠΌΠ΅Ρ‚ΠΎΠ΄ выбрасываСт (NumberFormatException).

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Π’ΠΈΠΏΠΎΠ² ошибок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство, всС ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ. Но всС ошибки Π² Logcat’С ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ:

Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ обСзопасим сСбя ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² наши поля Π²Π²ΠΎΠ΄Π° android:inputType=»number», Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄ оставим Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числа. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ равСнство: Π²Π²Π΅Π΄Ρ‘ΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа Π² ΠΎΠ±Π° поля. Всё Π² порядкС:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

На равСнство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ. Π’Π²Π΅Π΄Ρ‘ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ числа:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’ΠΎΠΆΠ΅ Ρ€Π°Π²Π½ΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠ°Π΄Π°Π΅Ρ‚, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ совсСм Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся. НавСрняка Π²Ρ‹ ΠΈ Π±Π΅Π· Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π° догадались, Π² Ρ‡Ρ‘ΠΌ ошибка, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ простоС, всСго нСсколько строк ΠΊΠΎΠ΄Π°. Но Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² прилоТСниях ΠΈ Π½Π° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ строк. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘ΠΌ ΠΏΠΎ ΡƒΠΆΠ΅ извСстным Π½Π°ΠΌ этапам Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π°:

И здСсь Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ. Для Π½Π°Ρ‡Π°Π»Π° поставим Ρ‚ΠΎΡ‡ΠΊΠΈ останова сразу Π² Ρ‚Ρ€Ρ‘Ρ… мСстах:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ½ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова, достаточно ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ справа ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° строки ΠΈΠ»ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ курсор Π½Π° Π½ΡƒΠΆΠ½ΡƒΡŽ строку, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠ°Ρ‚ΡŒ CTRL+F8. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ? Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π»ΠΈ числа ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π² нашСм Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΈ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дальшС. ЗапускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сочСтания клавиш SHIFT+F9 ΠΈΠ»ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ с ΠΆΡƒΡ‡ΠΊΠΎΠΌ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ваш дСвайс ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅Π±Π°Π³Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Π²Π΅Π΄Ρ‘ΠΌ Π½Π΅Ρ€Π°Π²Π½Ρ‹Π΅ числа ΠΈ Π½Π°ΠΆΠΌΡ‘ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π ΠΠ’ΠΠž?Β». ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Как Π²ΠΈΠ΄ΠΈΠΌ, значСния ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΡ‹ ΠΈ Π²Π²Π΅Π»ΠΈ. Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ чисСл ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС β€” Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π»ΠΈ Π²Π΅Ρ‚ΠΊΡƒ ΠΌΡ‹ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ F8 (ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку выполнСния ΠΊΠΎΠ΄Π°). А Ссли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° останова Π΄Π°Π»Π΅ΠΊΠΎ ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ F9 β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° просто Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ остановится Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Π’ интСрфСйсС эти ΠΊΠ½ΠΎΠΏΠΊΠΈ находятся здСсь:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€, Ссли ΠΎΠ½ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· CTRL+F2 ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π‘Ρ‚ΠΎΠΏΒ»:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’ нашСм случаС Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ (F9 ΠΈΠ»ΠΈ F8). ΠœΡ‹ сразу ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ останова ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Π΅Ρ‚ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π΅Ρ€Π½Π°, числа firstInt ΠΈ secondInt Π½Π΅ измСнились. Π—Π°Ρ‚ΠΎ ΠΌΡ‹ сразу Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ подпись нСкоррСктная! Π’ΠΎΡ‚ Π² Ρ‡Ρ‘ΠΌ Π±Ρ‹Π»Π° ошибка. Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ подпись ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΅Ρ‰Ρ‘ Ρ€Π°Π·.

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠœΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΡ‡ΠΈΠ½ΠΈΠ»ΠΈ Π΄Π²Π° Π±Π°Π³Π°: ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΎΠ³ΠΎΠ² ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°). Π₯Π΅ΠΏΠΏΠΈ пас (happy path) ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½. Π’ΠΎ Π΅ΡΡ‚ΡŒ основная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…Π΅ΠΏΠΏΠΈ пас β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. И ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, Π½ΠΎ вСсти сСбя странно Π² спСцифичСских состояниях. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Π²Π΅Π΄Ρ‘ΠΌ числа побольшС ΠΈ посмотрим, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

НС сработало β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ 1000 Π½Π΅ Ρ€Π°Π²Π½Π° 1000, Π½ΠΎ это абсурд. ЗапускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π’ΠΎΡ‡ΠΊΠ° останова ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Числа ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΠΎΠΉΡ‚ΠΈ Π½Π΅ Ρ‚Π°ΠΊ? ΠžΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” Integer. Π’Π°ΠΊ Π²ΠΎΡ‚ Π² Ρ‡Ρ‘ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°! Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π° ссылочный. БсылочныС Ρ‚ΠΈΠΏΡ‹ нСльзя ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ==, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ссылки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Π½Π΅ ΠΎΠ½ΠΈ сами. Но для Integer Π² Java Π΅ΡΡ‚ΡŒ нюанс: Integer ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎ 127, ΠΈ Ссли ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ Π² ΠΎΠ±Π° поля числа Π΄ΠΎ 127, Ρ‚ΠΎ фактичСски сравниваСм просто int. А Ссли Π²Π²ΠΎΠ΄ΠΈΠΌ большС, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. АдрСса Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ Java сравниваСт ΠΈΡ….

Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

НС рСкомСндуСтся ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ этих ΠΏΠΎΠ»Π΅ΠΉ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ: числа ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·Π²Π½Π΅, ΠΈ Ρ‚ΠΈΠΏ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ. ИзмСним Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ сравниваСм числа:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. НаконСц-Ρ‚ΠΎ! Π₯отя… Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Π²Π΅Π΄Ρ‘Ρ‚, Π½ΠΎ Π½Π°ΠΆΠΌΡ‘Ρ‚ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ? ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΡ‚ΡŒ упало… Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π² Π»ΠΎΠ³ΠΈ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠžΠΏΡΡ‚ΡŒ NumberFormatException, ΠΏΡ€ΠΈ этом строка пустая. Π”Π°Π²Π°ΠΉΡ‚Π΅ поставим Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π½Π° 26-ΠΉ строкС ΠΈ заглянСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π³Π»ΡƒΠ±ΠΆΠ΅.

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

НаТмём F8 β€” ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ! Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±Π΅Ρ€Π½Ρ‘ΠΌ ΠΊΠΎΠ΄ Π² try/catch ΠΈ посмотрим ошибкС Π² Π»ΠΈΡ†ΠΎ. Если Ρ‡Ρ‚ΠΎ, ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ВыдСляСм ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° onClick() ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Ctrl+Alt+T:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ try / catch, срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сама Π΄ΠΎΠΏΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄. ΠŸΠΎΡΡ‚Π°Π²ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ останова. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ЗапускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π»ΠΎΠ²ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π² Π»ΠΎΠ³Π°Ρ…, β€” NumberFormatException. ΠœΠ΅Ρ‚ΠΎΠ΄ parseInt выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ссли Π² Π½Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ строку. Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ β€” Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΌ. Π”Π²Π° самых простых способа:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ-Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ всё Π² порядкС! Π₯отя ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ тСстировщикам это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΎΡ‚Π΄Π°Π²Π°Π»: ΠΏΠΎΠΈΡ‰Π΅Ρ‚Π΅ Π΅Ρ‰Ρ‘ ошибки? πŸ™‚

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Иногда Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ послС запуска. НапримСр, ΠΊΠΎΠ΄ компилируСтся, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ запускаСтся, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄Π°Π»Ρ‘ΠΊ ΠΎΡ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ: ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π²Π΄Ρ€ΡƒΠ³ появляСтся какая-Ρ‚ΠΎ ошибка (Π±Π°Π³). Π’ Ρ‚Π°ΠΊΠΈΡ… случаях приходится Β«Π·Π°ΠΏΠ°ΡΠ°Ρ‚ΡŒΡΡ Π»ΠΎΠ³Π°ΠΌΠΈΒ», Β«Π±Ρ€Π°Ρ‚ΡŒ Π² Ρ€ΡƒΠΊΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΒ» ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ ошибки.

Часто процСсс поиска ΠΈ исправлСния Π±Π°Π³Π° состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… шагов:

Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π°Ρ‘Ρ‚, Ρ‚ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСсто ошибки Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ (ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ) β€” инструмСнт срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π»ΠΎΠ³ΠΈ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€ΠΎΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм простоС тСстовоС (ΠΈ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ даст Π½Π°ΠΌ всС возмоТности для поиска ошибок.

Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сравниваСт Π΄Π²Π° числа. Если числа Ρ€Π°Π²Π½Ρ‹, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Β«Π Π°Π²Π½ΠΎΒ», ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Начнём с простых шагов:

Нам автоматичСски ΠΎΡ‚ΠΊΡ€ΠΎΡŽΡ‚ΡΡ Π΄Π²Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ: activity_main.xml ΠΈ MainActivity.java. Π‘Π½Π°Ρ‡Π°Π»Π° нарисуСм ΠΌΠ°ΠΊΠ΅Ρ‚: просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ всё, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² activity_main.xml, Π½Π° ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅:

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΆΠΈΠ²ΠΈΠΌ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π² MainActivity этот ΠΊΠΎΠ΄:

Π’ этом ΠΊΠΎΠ΄Π΅ всё просто:

Запустим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π²Π΅Π΄Ρ‘ΠΌ Π±ΡƒΠΊΠ²Ρ‹ вмСсто чисСл:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

НаТмём Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΏΠ°Π΄Ρ‘Ρ‚! ВрСмя Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π²Π½ΠΈΠ·Ρƒ слСва Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Β«6: LogcatΒ» ΠΈ Π²ΠΈΠ΄ΠΈΠΌ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ просто: Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ красный тСкст ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сообщСниС систСмы. Π’ нашСм случаС это java.lang.NumberFormatException: For input string: «f». Π£ΠΊΠ°Π·Π°Π½ Ρ‚ΠΈΠΏ ошибки NumberFormatException, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° какая-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ числа. И Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: For input string: «f». Π’Π²Π΅Π΄Π΅Π½ΠΎ β€œf”. Π£ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΆΠ΄Ρ‘Ρ‚ число, Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π΅ΠΉ символ. Π”Π°Π»Π΅Π΅ Π² красном тСкстС Π²ΠΈΠ΄Π½ΠΎ ΠΈ ссылку Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΡƒΡŽ строку: at com.example.appdebugging.MainActivity$1.onClick(MainActivity.java:26). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ onClick класса MainActivity, строка 24. МоТно просто ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ ссылкС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ строку:

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠ΅Ρ‚ΠΎΠ΄ parseInt ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числовыС значСния, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹Π΅! Π”Π°ΠΆΠ΅ Π² Π΅Π³ΠΎ описании это сказано β€” ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ошибки этот ΠΌΠ΅Ρ‚ΠΎΠ΄ выбрасываСт (NumberFormatException).

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Π’ΠΈΠΏΠΎΠ² ошибок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство, всС ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ. Но всС ошибки Π² Logcat’С ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ:

Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ обСзопасим сСбя ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² наши поля Π²Π²ΠΎΠ΄Π° android:inputType=»number», Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄ оставим Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числа. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ равСнство: Π²Π²Π΅Π΄Ρ‘ΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ числа Π² ΠΎΠ±Π° поля. Всё Π² порядкС:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

На равСнство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ. Π’Π²Π΅Π΄Ρ‘ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ числа:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’ΠΎΠΆΠ΅ Ρ€Π°Π²Π½ΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠ°Π΄Π°Π΅Ρ‚, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ совсСм Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся. НавСрняка Π²Ρ‹ ΠΈ Π±Π΅Π· Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π° догадались, Π² Ρ‡Ρ‘ΠΌ ошибка, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ простоС, всСго нСсколько строк ΠΊΠΎΠ΄Π°. Но Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π² прилоТСниях ΠΈ Π½Π° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ строк. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘ΠΌ ΠΏΠΎ ΡƒΠΆΠ΅ извСстным Π½Π°ΠΌ этапам Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³Π°:

И здСсь Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ. Для Π½Π°Ρ‡Π°Π»Π° поставим Ρ‚ΠΎΡ‡ΠΊΠΈ останова сразу Π² Ρ‚Ρ€Ρ‘Ρ… мСстах:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ½ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова, достаточно ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ справа ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° строки ΠΈΠ»ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ курсор Π½Π° Π½ΡƒΠΆΠ½ΡƒΡŽ строку, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠ°Ρ‚ΡŒ CTRL+F8. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ? Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π»ΠΈ числа ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π² нашСм Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΈ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дальшС. ЗапускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сочСтания клавиш SHIFT+F9 ΠΈΠ»ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ с ΠΆΡƒΡ‡ΠΊΠΎΠΌ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ваш дСвайс ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅Π±Π°Π³Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Π²Π΅Π΄Ρ‘ΠΌ Π½Π΅Ρ€Π°Π²Π½Ρ‹Π΅ числа ΠΈ Π½Π°ΠΆΠΌΡ‘ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π ΠΠ’ΠΠž?Β». ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Как Π²ΠΈΠ΄ΠΈΠΌ, значСния ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΡ‹ ΠΈ Π²Π²Π΅Π»ΠΈ. Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ чисСл ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС β€” Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π»ΠΈ Π²Π΅Ρ‚ΠΊΡƒ ΠΌΡ‹ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ F8 (ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку выполнСния ΠΊΠΎΠ΄Π°). А Ссли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° останова Π΄Π°Π»Π΅ΠΊΠΎ ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ F9 β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° просто Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ остановится Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Π’ интСрфСйсС эти ΠΊΠ½ΠΎΠΏΠΊΠΈ находятся здСсь:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π΅Π±Π°Π³Π³Π΅Ρ€, Ссли ΠΎΠ½ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· CTRL+F2 ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π‘Ρ‚ΠΎΠΏΒ»:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’ нашСм случаС Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ (F9 ΠΈΠ»ΠΈ F8). ΠœΡ‹ сразу ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ останова ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Π΅Ρ‚ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π΅Ρ€Π½Π°, числа firstInt ΠΈ secondInt Π½Π΅ измСнились. Π—Π°Ρ‚ΠΎ ΠΌΡ‹ сразу Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ подпись нСкоррСктная! Π’ΠΎΡ‚ Π² Ρ‡Ρ‘ΠΌ Π±Ρ‹Π»Π° ошибка. Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ подпись ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΅Ρ‰Ρ‘ Ρ€Π°Π·.

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠœΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΡ‡ΠΈΠ½ΠΈΠ»ΠΈ Π΄Π²Π° Π±Π°Π³Π°: ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΠΎΠ³ΠΎΠ² ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°). Π₯Π΅ΠΏΠΏΠΈ пас (happy path) ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½. Π’ΠΎ Π΅ΡΡ‚ΡŒ основная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…Π΅ΠΏΠΏΠΈ пас β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. И ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, Π½ΠΎ вСсти сСбя странно Π² спСцифичСских состояниях. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Π²Π΅Π΄Ρ‘ΠΌ числа побольшС ΠΈ посмотрим, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

НС сработало β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ 1000 Π½Π΅ Ρ€Π°Π²Π½Π° 1000, Π½ΠΎ это абсурд. ЗапускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π’ΠΎΡ‡ΠΊΠ° останова ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Числа ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΠΎΠΉΡ‚ΠΈ Π½Π΅ Ρ‚Π°ΠΊ? ΠžΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” Integer. Π’Π°ΠΊ Π²ΠΎΡ‚ Π² Ρ‡Ρ‘ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°! Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π° ссылочный. БсылочныС Ρ‚ΠΈΠΏΡ‹ нСльзя ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ==, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ссылки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Π½Π΅ ΠΎΠ½ΠΈ сами. Но для Integer Π² Java Π΅ΡΡ‚ΡŒ нюанс: Integer ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎ 127, ΠΈ Ссли ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ Π² ΠΎΠ±Π° поля числа Π΄ΠΎ 127, Ρ‚ΠΎ фактичСски сравниваСм просто int. А Ссли Π²Π²ΠΎΠ΄ΠΈΠΌ большС, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. АдрСса Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ Java сравниваСт ΠΈΡ….

Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

НС рСкомСндуСтся ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ этих ΠΏΠΎΠ»Π΅ΠΉ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ: числа ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·Π²Π½Π΅, ΠΈ Ρ‚ΠΈΠΏ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ. ИзмСним Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ сравниваСм числа:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. НаконСц-Ρ‚ΠΎ! Π₯отя… Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Π²Π΅Π΄Ρ‘Ρ‚, Π½ΠΎ Π½Π°ΠΆΠΌΡ‘Ρ‚ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ? ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΡ‚ΡŒ упало… Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π² Π»ΠΎΠ³ΠΈ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ΠžΠΏΡΡ‚ΡŒ NumberFormatException, ΠΏΡ€ΠΈ этом строка пустая. Π”Π°Π²Π°ΠΉΡ‚Π΅ поставим Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π½Π° 26-ΠΉ строкС ΠΈ заглянСм с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π³Π»ΡƒΠ±ΠΆΠ΅.

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

НаТмём F8 β€” ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ! Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±Π΅Ρ€Π½Ρ‘ΠΌ ΠΊΠΎΠ΄ Π² try/catch ΠΈ посмотрим ошибкС Π² Π»ΠΈΡ†ΠΎ. Если Ρ‡Ρ‚ΠΎ, ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ВыдСляСм ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° onClick() ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Ctrl+Alt+T:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ try / catch, срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сама Π΄ΠΎΠΏΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄. ΠŸΠΎΡΡ‚Π°Π²ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ останова. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

ЗапускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π»ΠΎΠ²ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π² Π»ΠΎΠ³Π°Ρ…, β€” NumberFormatException. ΠœΠ΅Ρ‚ΠΎΠ΄ parseInt выбрасываСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ссли Π² Π½Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ строку. Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ β€” Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΌ. Π”Π²Π° самых простых способа:

ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ log Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ-Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ всё Π² порядкС! Π₯отя ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ тСстировщикам это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΎΡ‚Π΄Π°Π²Π°Π»: ΠΏΠΎΠΈΡ‰Π΅Ρ‚Π΅ Π΅Ρ‰Ρ‘ ошибки? πŸ™‚

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *