Pomoč LibreOfficeDev 7.6
Storitev Exception je nabor metod za razhroščevanje kode skriptov Basic in Python ter za ravnanje ob napakah v skriptih Basic.
V primeru napake v skriptih Basic ob izvajanju lastnosti in metode storitve Exception pomagajo identificirati kontekst napake in omogočajo ravnanje z njo.
Storitev SF_Exception je podobna predmetu VBA Err.
Lastnost Number identificira napako.
Uporabite metodo Raise, da prekinete obdelavo. Uporabite metodo RaiseWarning, da ujamete nepravilnost, vendar ne prekinete izvajanja makra.
Napake in opozorila storitve Exception se hranijo v pomnilniku in jih lahko pridobite z metodo Console.
Konzola storitve Exception hrani dogodke, vrednosti spremenljivk in podatke o napakah. Uporabite konzolo, ko IDE Basic ni enostavno dosegljiv, npr. za uporabniško-določene funkcije Calc (UDF) ali pri obdelavi dogodkov.
Uporabite metodo DebugPrint za dodajanje vseh relevantnih podatkov v konzolo. Vnose iz konzole lahko izmečete v besedilno datoteko ali prikažete v pogovornem oknu.
Če pride do napake, lahko makro programa:
javi napako v konzoli Exception,
obvesti uporabnika o napaki prek standardnega sporočila ali sporočila po meri,
po želji ustavi svoje izvajanje.
V skriptih Python se storitev Exception večinoma uporablja za razhroščevanje. Metode, kot so DebugPrint, Console in DebugDisplay, so uporabne za hitro izpisovanje sporočil, beleženje podatkov in odpiranje okna konzole iz skripta Python.
Za skripte Python vse metode in lastnosti niso na voljo, saj ima jezik Python zelo razdelan sistem obravnave izjem.
Naslednji primeri prikazujejo tri različne pristope h klicu metode Raise. Vse druge metode je mogoče izvesti na podoben način.
    SF_Exception.Raise(...)
  
    Dim exc : exc = SF_Exception
    exc.Raise(...)
  
    Dim exc : exc = CreateScriptService("Exception")
    exc.Raise(...)
  Spodnji odlomek kode ustvari instanco storitve Exception, zabeleži sporočilo in prikaže okno Console.
    from scriptforge import CreateScriptService
    exc = CreateScriptService("Exception")
    someVar = 100
    exc.DebugPrint("Value of someVar", someVar)
    exc.Console()
  Spodaj naštete lastnosti so na voljo le za skripte Basic.
| Ime | Samo za branje | Opis | 
|---|---|---|
| Description | Ne | Besedilo sporočila o napaki. Privzeta vrednost je "" ali niz, ki vsebuje sporočilo o napaki Basic med izvajanjem. | 
| Number | Ne | Koda napake. Lahko je številska vrednost ali besedilo. Privzeta vrednost je 0 ali številska vrednost, ki ustreza kodi napake Basic med izvajanjem. | 
| Source | Ne | Mesto v kodi, kjer je prišlo do napake. Lahko je številska vrednost ali besedilo. Privzeta vrednost je 0 ali številka vrstice kode za standardno napako med izvajanjem Basica. | 
Priklic ali čiščenje izjeme Exception ponastavi njene lastnosti.
| Seznam metod v storitvi Exception | ||
|---|---|---|
Ponastavi trenutno stanje napake in počisti lastnosti SF_Exception.
    SF_Exception.Clear()
  Naslednji primer prikazuje, kako ujeti izjemo deljenja z nič, za katero je koda napake enaka 11.
    Sub Example_Clear()
        Dim a, b, c
        On Local Error GoTo Catch
        Try:
            a = 10 : b = 0
            c = a / b
            '...
            Exit Sub
        Catch:
            If SF_Exception.Number = 11 Then SF_Exception.Clear()
            ' Če gre za deljenje z nič, prezri napako
    End Sub
  Celoten seznam kod napake med izvajanjem programov v Basicu si oglejte v sestavku Razhroščevanje programa Basic.
Prikaže sporočila konzole v modalnem ali nemodalnem pogovornem oknu. V obeh načinih se prikažejo pretekla sporočila, izdana z metodo DebugPrint() ali kot rezultat izjem. V nemodalnem načinu so naknadni vnosi dodani samodejno.
Če je konzola že odprta, ko ni modalna, se postavi v ospredje.
Modalno konzolo lahko zapre samo uporabnik. Nemodalno konzolo lahko zapre uporabnik ali pa se zapre ob zaključku izvajanja makra.
exc.Console(modal: bool = True)
modal: določa, ali je konzola modalna (True) ali ne (False). Privzeta vrednost je True.
        SF_Exception.Console(Modal := False)
  
    exc.Console(modal = False)
  Počisti konzolo in ohrani (neobvezen parameter) navedeno število nedavnih sporočil. Če je konzola aktivirana v nemodalnem načinu, se osveži.
exc.ConsoleClear(keep: int = 0)
keep: število nedavnih sporočil, ki jih želite ohraniti. Privzeta vrednost je 0.
Naslednji primer počisti konzolo in obdrži 10 nedavnih sporočil.
        SF_Exception.ConsoleClear(10)
  
    exc.ConsoleClear(10)
  Izvozi vsebino konzole v besedilno datoteko. Če datoteka že obstaja in konzola ni prazna, bo prepisana brez opozorila. Vrne True, če uspe.
exc.ConsoleToFile(filename: str): bool
filename: ime besedilne datoteke, v katere naj bo izmetana konzola. Ime je izraženo v skladu s trenutno lastnostjo FileNaming storitve SF_FileSystem. Privzeto sta dovoljeni notacija URL in domoroden zapis operacijskega sistema.
        SF_Exception.ConsoleToFile("C:\Documents\myFile.txt")
  
    exc.ConsoleToFile(r"C:\Documents\myFile.txt")
  Zbere vse podane argumente v en sam uporabniku prijazen niz ter ga prikaže v oknu MsgBox z ikono Informacija in gumbom V redu.
Zadnji niz se prav tako doda v konzolo.
exc.DebugDisplay(arg0: any, [arg1: any, ...])
arg0[, arg1, ...]: poljubno število argumentov poljubne vrste.
    SF_Exception.DebugDisplay("Current Value", someVar)
  
    exc.DebugDisplay("Current Value", someVar)
  Zbere vse podane argumente v en sam uporabniku prijazen niz ter doda nov vnos v konzolo.
exc.DebugPrint(arg0: any, [arg1: any, ...])
arg0[, arg1, ...]: poljubno število argumentov poljubne vrste.
    SF_Exception.DebugPrint(Null, Array(1, 2, 3), "line1" & Chr(10) & "Line2", DateSerial(2020, 04, 09))
    ' [NULL]   [ARRAY] (0:2) (1, 2, 3)  line1\nLine2  2020-04-09
  
    exc.DebugPrint(None, [1, 2, 3], "line1\nline2")
    # None  [1, 2, 3]  line1\nline2
  Prikaže seznam argumentov v berljivi obliki v konzoli platforme oz. operacijskega sistema. Argumenti so ločeni s tabulatorskim znakom (simuliranih s presledki).
Isti niz se prav tako doda v konzolo razhroščevanja ScriptForge.
Če je lupina Python (APSO) dejavna, se vsebina PythonPrint izpiše v konzoli APSO namesto v konzoli platforme.
  exc.PythonPrint(arg0: any, [arg1: any, ...])
  arg0[, arg1, ...]: poljubno število argumentov poljubne vrste. Največja dolžina vsakega posameznega argumenta je 1024.
    exc.PythonPrint(a, Array(1, 2, 3), , "line1" & Chr(10) & "Line2", DateSerial(2020, 04, 09))
  V Pythonu uporabite ukaz print za izpis v konzolo APSO ali uporabite metodo DebugPrint za izpis v konzolo ScriptForge.
Odpre lupino Python APSO kot nemodalno okno. Po odprtju lupine teče skript Python naprej. Izhod ukazov print iz skripta je prikazan v lupini.
V danem trenutku je možno odpreti le eno instanco lupine Python APSO. Če je lupina Python že odprta, klic te metode nima učinka.
exc.PythonShell(variables: dict)
variables: slovar Python z imeni in vrednostmi spremenljivk, ki bo podan naprej lupini Python APSO. Vse krajevne spremenljivke so privzeto podane naprej z vgrajeno funkcijo Python locals().
Spodnji primer lupine Python APSO poda naprej vse globalne in krajevne spremenljivke glede na kontekst, v katerem se skript izvaja.
    exc.PythonShell({**globals(), **locals()})
  Če je lupina Python APSO odprta, je vsak nadaljnji izhod, izpisan s skriptom, prikazan v lupini. Zato se niz, izpisan s spodnjim primerom, prikaže v lupini Python.
    exc.PythonShell()
    print("Žive naj vsi narodi!")
  Povzroči napako med izvajanjem. Sporočilo o napaki je prikazano uporabniku in sporočeno v konzoli. Izvajanje se ustavi. Metoda Raise() je lahko postavljena v navaden tok skripta ali v posebno proceduro za ravnanje ob napakah.
    SF_Exception.Raise([Number As Variant], [Source As Variant], [Description As String])
  Izseki kode, predstavljeni v nadaljevanju, so ekvivalentni. Prikazujejo različne načine za priklic izjeme s kodo 2100.
    SF_Exception.Raise(2100)
  
    SF_Exception.Number = 2100
    SF_Exception.Raise()
  
    SF_Exception.Raise Number := 2100
  Number: koda napake, podana kot število ali kot niz. Privzeta vrednost je vrednost vgrajene funkcije Basic Err.
Source: mesto napake, podano kot število ali kot niz. Privzeta vrednost je vrednost vgrajene funkcije Basic Erl.
Description: sporočilo, ki bo prikazano uporabniku in sporočeno v konzoli. Privzeta vrednost je vrednost vgrajene funkcije Basic Error$.
    Sub Example_Raise()
        Dim a, b, c
        On Local Error GoTo Catch
        Try:
            a = 10 : b = 0
            c = a / b
            '...
            Exit Sub
        Catch:
            'Glejte spodnje inačice ...
    End Sub
  Če želite priklicati izjemo s standardnimi vrednostmi:
    Catch:
        SF_Exception.Raise()
  Če želite priklicati izjemo z določeno kodo:
    Catch:
        SF_Exception.Raise(11)
  Če želite zamenjati običajno sporočilo:
    Catch:
        SF_Exception.Raise(, , "Ni pametno deliti z nič.")
  Za javljanje napake programa:
    Catch:
        SF_Exception.Raise("MyAppError", "Example_Raise()", "Nekaj je šlo narobe!")
  Ta metoda ima povsem enako skladnjo, argumente in vedenje kot metoda Raise().
Če je izdano opozorilo, se izvajanje makra ne ustavi.
    SF_Exception.RaiseWarning([Number As Variant], [Source As Variant], [Description As String])
  
    SF_Exception.RaiseWarning(Source:="Example_Raise()", _
        Description:="Something wrong happened !", _
        Number:="MyAppError")