Soplang Logo
Soplang

Error Handling

Sida loo qabto khaladaadka Soplang: fasax iyo qabo (try/catch), qaabka fariimaha khaladka, iyo error codes-ka.

Error Handling in Soplang

Marka khalad runtime ah dhaco (tusaale qaybinta eber), barnaamijku wuu joogsadaa. Si aad u qabato khaladka oo barnaamijku u sii socdo, isticmaal fasax iyo qabo.

fasax iyo qabo – Try / Catch

Koodhka khatarta leh geli block-ga fasax. Haddii khalad dhaco, fulintu waxay u boodaysaa block-ga qabo, fariinta khaladkana (qoraal) waxaa lagu kaydiyaa doorsoomaha ku jira qabo (...).

try_catch.sop
hawl qaybi(a, b) {
  celi a / b
}

fasax {
  qor(qaybi(10, 2))      // 5
  qor(qaybi(10, 0))      // khalad: waxay u boodaysaa qabo
  qor("Tan lama gaaro")
} qabo (khalad) {
  qor("Qabtay: " + khalad)   // Qabtay: Qaybinta eber ma jirto
  qor(nooc(khalad))          // qoraal
}

qor("Barnaamijku wuu sii socdaa")
  • qabo waa qasab — fasax mar walba waa inuu leeyahay qabo (magac).
  • Haddii aan khalad dhicin, block-ga qabo lama fuliyo.
  • fasax waa la isku dhex dhigi karaa (nest). Khaladka waxaa qabanaya qabo-ga ugu dhow.
nested_try.sop
fasax {
  fasax {
      qor(1 / 0)
  } qabo (gudaha) {
      qor("gudaha: " + gudaha)
  }
  qor("kadib")
} qabo (dibadda) {
  qor("dibadda")
}

Khaladaadka methods-ka

Hadda fasax wuxuu si kalsooni leh u qabtaa khaladaadka hawlaha ku-dhexjira (sida abn(), daji(), xul()) iyo qaybinta eber. Khaladaadka ka yimaada methods-ka (tusaale t.kasaar() liis madhan, ama method aan jirin) hadda waxay burburin karaan barnaamijka xitaa gudaha fasax. Hubi xaaladda ka hor intaadan wicin method-ka — tusaale haddii (dherer(t) > 0) { t.kasaar() }.

Signalling Failure from a Function

Soplang ma laha keyword throw. Si hawl u sheegto in ay fashilantay, inta badan waxaa la soo celiyaa null kadibna waa la hubiyaa:

return_null.sop
hawl hubi_da(da) {
  haddii (da < 0) {
      celi null
  }
  celi da
}

door natiijo = hubi_da(-5)
haddii (natiijo == null) {
  qor("Da' khaldan")
}

Error Messages

Fariimaha khaladka Soplang waxay ku qoran yihiin Af-Soomaali, waxayna leeyihiin qaabkan:

Khalad <nooc>: <fariin> [<code>] safka <sadar>, tiirka <tiir>

Tusaale, marka madoor la beddelo:

Khalad nooc: Ma bedeli kartid qiimaha doorsamaha madoor 'luqad' [E020] safka 2, tiirka 1
   2 │   luqad = "English"
     │   ^
     └─ Doorsamaha madoor ma beddeli karaan qiimahooda. Isticmaal 'door' haddii aad rabto mid beddeli kara.

Noocyada khaladka (<nooc>):

NoocGoorta uu dhaco
lexerXaraf aan la aqoon, string ama faallo aan la xirin
parserSyntax khaldan, tusaale ) maqan ama ;
noocNooc aan is-waafaqsanayn (type error)
runtimeKhalad inta barnaamijku socdo, tusaale qaybinta eber
importFayl keen lagu sheegay oo aan la helin

Colors-ka waxaa lagu dami karaa --no-color ama NO_COLOR=1.

Error Codes

Khaladaadka qaarkood waxay wataan code gaaban oo kaa caawinaya inaad raadiso:

CodeMacnaha
E001Xaraf aan la filayn
E002String aan la xirin
E003Faallo /* */ aan la xirin
E020Dib-u-qeexid, ama beddelid doorsoome madoor ah
E021Wax aan la helin, tusaale fayl keen lagu sheegay
E022Nooc aan is-waafaqsanayn (static type, doodaha hawl, ama nooca celinta)

On this page