Грешке у програмирању су неизбежне. Пре или касније, ваша апликација ће доживети неочекивано понашање. Као и сваки други програмски језик, ЈаваСцрипт изазива грешке када нешто крене наопако у вашем коду.

Грешке ометају нормалан ток апликације. Али они такође помажу у заштити ваше апликације од непредвидивог понашања. Знати како правилно поступати са грешкама је кључно.

Зашто је важно руковање грешкама?

Руковање грешкама доприноси побољшаном корисничком искуству. Можете да замените подразумеване и понекад опширне ЈаваСцрипт-ове грешке сопственим порукама о грешкама које су читљивије. Можете елегантно да се носите са узроцима неких грешака и наставите да ваш програм ради уместо да га затворите.

Руковање грешкама је такође корисно током развоја. Можете ухватити грешку у току извођења и урадити нешто корисно са њом, нпр евидентирање на конзоли претраживача. Ово је грациозније од грешке која узрокује пад и не зна где и зашто је дошло до грешке.

Структура ЈаваСцрипт уграђених грешака

ЈаваСцрипт грешке су објекти са три својства:

instagram viewer
  • име: Ово је назив грешке. На пример, име променљиве која недостаје ће изазвати грешку под називом СинтакЕррор.
  • порука: Ово је тело поруке и текстуално објашњава грешку.
  • узрок: Можете користити ово својство са прилагођеним грешкама да бисте пратили стек позива.

Уобичајени типови грешака у ЈаваСцрипт-у

Ево неких уобичајених грешака које се могу наћи у ЈаваСцрипт-у.

Синтаксна грешка

До грешака у синтакси може доћи када ЈаваСцрипт покуша да протумачи ваш код. Појавиће се грешка ако ваш код није у складу са тачном синтаксом. Неке уобичајене грешке које могу изазвати синтаксичке грешке су:

  • Недостају називи променљивих.
  • Недостаје „}“ после функције.
  • Недостаје „)“ после услова.

РеференцеЕррор

Референтне грешке се јављају када програм то покуша референцирати променљиву који је недоступан или ван домета.

ТипеЕррор

ЈаваСцрипт може да изазове грешку у типу када не може да изврши операцију јер се тип који очекује разликује од оног који прима.

УРИЕррор

Ова грешка се јавља ако користите глобалну функцију руковања УРИ-јем—као што је децодеУРИЦомпонент()—нетачно. Као резултат, кодирање или декодирање не успева.

АггрегатеЕррор

Ова грешка се користи за представљање више грешака умотаних у једну. Користите га када желите да избаците више грешака одједном. На пример, Промисе.ани() може да избаци АггрегатеЕррор() када сва обећања која су му прослеђена одбију.

Унутрашња грешка

ИнтерналЕррор се јавља када дође до грешке унутар ЈаваСцрипт механизма.

РангеЕррор

Неке функције диктирају опсег вредности које можете проследити као аргументе. Ова грешка се јавља када покушате да проследите вредност која није укључена у тај опсег.

Управљање грешком са покушајем... Цатцх Блоцк

ЈаваСцрипт пружа уграђену функционалност за обраду изузетака са покушајте...ухватите...коначно блокирати. Такође вам омогућава да подигнете сопствене грешке користећи бацити оператер.

Можете користити блок три…цатцх за руковање грешкама које се јављају током времена извршавања. Пишете важећи код за који очекујете да ће се исправно извршити у блоку три. У блоку цатцх можете написати код за руковање грешкама.

покушати {
// Валид Јавасцрипт код
} улов (грешка) {
// Грешка руковања
} коначно {
// Извршава се чак и када дође до грешке
}

Блок цатцх се занемарује ако код у блоку три не изазива никакве грешке. Ако покрене грешку, извршење скаче на блок за хватање. Код у финалли блоку се покреће без обзира на то да ли је дошло до грешке или не. Овај блок није обавезан, па га изоставите ако вам није потребан.

Код који укључите у блок покушаја мора бити важећи. Ако није, ЈаваСцрипт ће приказати грешку рашчлањивања.

Погледајмо практичан пример:

покушати {
конзола.лог (текст)
} улов (грешка) {
конзола.Пријава(грешка.мессаге)
} коначно {
цонсоле.лог("Биће извршено без обзира")
}

Овај програм покушава да евидентира вредност текстуалне променљиве. Пошто та променљива није дефинисана, програм ће приказати грешку. Ова грешка се штампа на конзоли у блоку цатцх. Блок финалли се затим покреће и штампа сопствену поруку.

РеференцеЕррор: текст није дефинисан
Биће извршено без обзира

У ситуацијама када морате да поднесете сопствену грешку, користите бацити оператер.

Размотрите овај пример који даје грешку ако су подаци лажни:

конст подаци = гетДата()

покушати {
ако (!подаци) {
бацити "Нема података"
}

конзола.лог (подаци)
// Настави
} улов(грешка) {
конзола.лог (грешка) // "Нема података"
}

У овом примеру, програм позива функцију гетДата() и додељује њен резултат променљивој података. У блоку покушаја, блок избацује прилагођену грешку ако су подаци празни. Блок цатцх хвата ту грешку и евидентира је на конзоли.

Убацивање грешака је веома корисно током развоја. Можете користити прилагођену поруку о грешци да бисте разумели зашто ваша апликација не ради како се очекивало.

Као што овај пример показује, можете користити стринг за објекат грешке. Можете заправо избацити било који ЈаваСцрипт израз као грешку. Међутим, ради доследности са уграђеним грешкама, користите ЈаваСцрипт објекат који садржи име и поруку.

бацити {
име: "Назив грешке",
порука: "Порука о грешци"
}

Такође можете да користите уграђене конструкторе ЈаваСцрипт-а када бацате грешке. Ови конструктори укључују Еррор, СинтакЕррор и РеференцеЕррор, између осталих.

Да бисте добили грешку помоћу конструктора Еррор, користите овај код:

бацитиНоваГрешка("Нема података")

Сада можете референцирати име и поруку.

конзола.лог (еррор.наме) // Грешка
конзола.лог (еррор.мессаге) // Нема података

Проширивање објекта ЈаваСцрипт грешке

Прилагођена класа грешака је згодна при руковању грешкама које не одговарају објектима које већ пружа ЈаваСцрипт. На пример, можда бисте желели да изолујете грешку валидације података као специфичан тип који се зове ВалидатионЕррор.

Можете користити а ЈаваСцрипт ЕС2015 класа да креирате прилагођену класу грешака.

класаВалидатионЕррорпротежеГрешка{
конструктор(порука) {
супер(порука);
тхис.наме = "ВалидатионЕррор";
}
}

Избаците грешку користећи класу ВалидатионЕррор овако:

бацитиНова ВалидатионЕррор("Ваша порука о грешци")

Избачена грешка ће бити објекат са вредностима имена и поруке.

{
име: "ВалидатионЕррор",
порука: "Ваша порука о грешци"
}

Грешке су ту да помогну

Руковање грешкама је основни део програмирања, који год језик да користите. ЈаваСцрипт има одличну подршку за подизање и хватање грешака у стилу изузетака. Такође има неколико уграђених типова грешака које можете руковати и користити за своје случајеве.

Неке грешке као што су синтаксичке грешке могу остати неоткривене када пишете ЈаваСцрипт у „траљавом режиму“. Коришћење строгог режима омогућава ЈаваСцрипт-у да ухвати грешке које би иначе игнорисао.