Go to the first, previous, next, last section, table of contents.


Rukovanje greskama

Ako se desi greska, Logo poduzima slijedece korake. Prvo, ako postoji varijabla ERRACT, Logo uzima njezinu vrijednost kao instrukcijsku listu i izvrsi instrukcije. Operacija ERROR moze biti upotrijebljena (jednom) da ispita uzroke greske. Ako instrukcijska lista poziva PAUSE, poruka o greski se ispise prije nego pocne pauza. Iz nekih greski se moze "izvuci"; za takove greske, ako instrukcijska lista outputira vrijednost, ta vrijednost se upotrijebi umjesto izraza koji je uzrokovao gresku. (Ako ERRACT pozove PAUSE, a korisnik onda pozove CONTINUE sa inputom, taj input tada postaje output od PAUSE, a time i output od ERRACT instrukcijske liste.)

Moguce je da ERRACT instrukcijska lista izbaci neprihvatljivu vrijednost, ili ne izbaci vrijednost, tamo gdje vrijednost treba. Kao rezultat toga, ista greska bi se mogla ponavljati zauvijek. Da bi se izbjegla ta opasnost, ako se ista greska pojavi dvaput za redom iz ERRACT instrukcijske liste bez korisnicke interakcije, poruka "Erract loop" se ispise i kontrola se vraca u toplevel. "Bez korisnicke interakcije" znaci da ako ERRACT pozove PAUSE a korisnik unese netocnu vrijednost, ovaj mehanizam nece biti pozvan i korisnik moze pokusati opet.

Za vrijeme izvrsenja ERRACT instrukcijske liste, ERRACT je lokalno nevezan (nema vrijednosti), tako da greske u samoj ERRACT instrukcijskoj listi nece uzrokovati petlju. Narocito, greska za vrijeme pauze, nece uzrokovati pauzu-u-pauzi, osim ako korisnik nije promijenio vrijednost ERRACT u [PAUSE] za vrijeme pauze. Takove greske nas nece vratiti u toplevel, nego ce nas ostaviti u originalnoj PAUSE petlji.

Ako ne postoji (dostupna) ERRACT vrijednost, Logo ce rukovati sa greskom tako da generira unutrasnji THROW "ERROR. (Korisnicki program takodjer moze generirati situaciju greske namjerno pozivajuci THROW.) Ako taj THROW nije uhvacen sa CATCH "ERROR u korisnickom programu, prije ili kasnije bude uhvacen bilo iz toplevel instrukcijske petlje ili iz PAUSE petlje, koje onda ispisu poruku o greski. Poziv CATCH "ERROR u korisnickom programu lokalno odveze (oslobodi od vrijednosti) ERRACT, tako da bilo ERRACT ili CATCH "ERROR (onaj koji je "vise" lokalan) ima prednost.

Ako se desi floating point overflow za vrijeme aritmeticke operacije, ili se matematicka funkcija sa dva inputa (kao POWER) pozove sa ilegalnom kombinacijom inputa, "doesn't like" poruka se odnosi na drugi operand, ali zapravo znaci da "ne voli" kombinaciju.

See section erract ; section throw ; section error ; section catch ; section pause ; section continue

Kodovi gresaka

Ovdje su numericki kodovi koji se pojavljuju kao prvi clan liste outputirane od ERROR kada je greska uhvacena, zajedno sa pripadajucom porukom. Neke poruke mogu imati dva razlicita koda, sto ovisi o tome da li je to greska iz koje se moze izvuci (to jest, zamjenska vrijednost moze biti data kroz ERRACT mehanizam) u specificnom kontekstu. Neke poruke su upozorenja (warnings) a ne greske; te nece biti uhvacene. Greske 0 i 32 su tako teske da nas Logo odmah vraca u operativni sistem.


  0   Fatal internal error (can't be caught)
      Fatalna unutrasnja greska (ne moze biti uhvacena)

  1   Out of memory
      Nedostaje memorije

  2   PROC doesn't like DATUM as input (not recoverable)
      PROC ne voli PODATAK kao input (nisu spasive)

  3   PROC didn't output to PROC
      PROC nije outputirala PROC

  4   Not enough inputs to PROC
      Nema dosta inputa za PROC

  5   PROC doesn't like DATUM as input (recoverable)
      PROC ne voli PODATAK kao input (spasiva)

  6   Too much inside ()'s
      Previse unutar zagrada.

  7   You don't say what to do with DATUM
      Ne kazete sto da napravim sa PODATKOM

  8   ')' not found
      ')' nije nadjen

  9   VAR has no value
      VAR nema vrijednosti

 10   Unexpected ')'
      Neocekivani ')'

 11   I don't know how to PROC (recoverable)
      Ne znam kako da PROC (spasiva)

 12   Can't find catch tag for THROWTAG
      Ne mogu pronaci catch tag za THROWTAG

 13   PROC is already defined
      PROC je vec definirana

 14   Stopped
      Zaustavljen

 15   Already dribbling
      Vec dribbling

 16   File system error
      File sistem greska

 17   Assuming you mean IFELSE, not IF (warning only)
      Pretpostavljam da mislite IFELSE, a ne IF (samo upozorenje)

 18   VAR shadowed by local in procedure call (warning only)
      VAR je osjencana sa lokalnom u pozivu procedure (upozorenje)

 19   Throw "Error
      Throw (baci) "Error

 20   PROC is a primitive
      PROC je primitiv

 21   Can't use TO inside a procedure
      Ne mogu upotrijebiti TO unutar procedure.

 22   I don't know how to PROC (not recoverable)
      Ne znam kako PROC (nije spasiva)

 23   IFTRUE/IFFALSE without TEST
      IFTRUE/IFFALSE bez TEST-a

 24   Unexpected ']'
      Neocekivana ']'

 25   Unexpected '}'
      Neocekivana '}'

 26   Couldn't initialize graphics
      Ne mogu inicijalizirati grafiku

 27   Macro returned VALUE instead of a list
      Makro je vratio VALUE umjesto liste

 28   You don't say what to do with VALUE
      Ne kazete sto napraviti sa VALUE

 29   Can only use STOP or OUTPUT inside a procedure
      Mogu upotrijebiti STOP ili OUTPUT jedino unutar procedure

 30   APPLY doesn't like BADTHING as input
      APPLY ne voli LOSUSTVAR kao input

 31   END inside multi-line instruction
      END unutar multi-line instrukcije

 32   Really out of memory (can't be caught)
      Zaista bez memorije (ne moze se uhvatiti)


Go to the first, previous, next, last section, table of contents.