Sobes.tech
Junior

Оё шумо дар бораи ҳиерархияи хатоҳо дар Android маълумот доред?

sobes.tech AI

Ҷавоб аз AI

Бале, ман фаҳмидам. Иерархияи хато дар Android асос ёфтааст ба иерархияи стандартии истисноҳо дар Java.

Классҳои асосӣ:

  • Throwable: класс барои ҳамаи истисноҳо ва хатоҳо.
  • Exception: класс барои рӯйдодҳои истисноӣ, ки одатан метавон онҳоро фатҳ ва коркард кард.
  • Error: класс барои мушкилоти ҷиддӣ, ки одатан барнома наметавонад барқарор кунад (масалан, OutOfMemoryError, StackOverflowError).

Мирас:

  • Exception ва Error аз Throwable мерос мегиранд.
  • Бисёре аз истисноҳои махсуси Android (масалан, ActivityNotFoundException, SecurityException) аз RuntimeException мерос мегиранд, ки худ аз Exception мерос мегирад. RuntimeException "unchecked exception" аст, яъне онро бояд ба таври махсус коркард ё дар имзоии метод зикр накарда шавад.

Маҳзияти фаҳмидани:

  • Имкон медиҳад, ки хато ва истисноҳоро дуруст коркард кард, пешгирӣ аз фурӯпошии барнома.
  • Ба навиштани коди боэътимод ва муқовимат ба хато кӯмак мекунад.
  • Дар ташхис ва таҳлили сабабҳои нокомӣ кӯмак мерасонад.

Маслиҳат барои коркард:

try {
    // Коди, ки метавонад истисноро ба вуҷуд орад
    val data = fetchDataFromNetwork()
} catch (e: Exception) {
    // Коркарди истисно
    Log.e("MyTag", "Хатои дар гирифтани маълумот: ${e.message}", e)
    // Шояд, паёмро ба корбар нишон диҳед
} finally {
    // Коди, ки дар ҳар ҳол иҷро мешавад
}