Pokud se nenalezne ani jeden neprázdný label, v proměnné pocet bude 0 a Praat při dělení
uloží do proměnné prumer hodnotu --undefined--.
Neznalého uživatele může takový výsledek vyděsit a nemusí mu tím pádem hned dojít, v čem je
potíž (že má špatný TextGrid). Navíc, pokud by skript obsahoval ještě nějaké další příkazy,
bude v nich vesele pokračovat dále.
Vhodnější by bylo vytvořit vlastní chybobou hlášku, ve které „lidsky“ popíšeme
skutečnou podstatu problému: „Máte prázdný TextGrid“ a skript předčasně zastavíme. To uživatel jistě pochopí mnohem lépe než hodnotu --undefined--.
Na konci kapitoly Podmínky jsme probírali příkaz exitScript pro předčasné ukončení skriptu. Jedním řešením je tedy provést před výpočtem průměru kontrolu podmínkou.
if pocet < 1
exitScript: "Nenalezen žádný label s textem."
endif
prumer = soucet/pocet
printline Průměr: 'prumer:3' sec.
Jinou (úspornější) metodou je použití příkazu assert, u kterého naopak specifikujeme, jak má podmínka vypadat, když je vše v pořádku. Na stejném řádku za středníkem pak můžeme napsat zprávu pro uživatele a nechat vypsat kontrolní hodnoty nějakých proměnných (formát je stejný, jako u printline).
Výhodou je stručnost tohoto zápisu (žádné if, endif, exitscript) – vše je na jednom řádku.
Z důvodu tohoto pohodlí je tedy možné předpokládat, že bude pro programátora příjemnější takovéto
kontroly do skriptu přidat a bude tak více motivován ošetřovat rizikové možnosti.
Součástí této hlášky je automaticky i číslo řádku ve skriptu, kde ověření nastalo, takže uživatel
může v případě potřeby autorovi skriptu dobře popsat, kde přesně dochází k problému.
Navíc assert zvládne správně zareagovat i v případě, že proměnná, která je součástí podmínky, nebyla
třeba vůbec ani definována. V takovém případě také zastaví skript a informuje o problému, k tomu
opět připojí nastavenou zprávu pro uživatele.
assert pocet > 0; Nenalezen žádný label s textem, pocet = 'pocet'.
prumer = soucet/pocet
printline Průměr: 'prumer:3' sec.