LibreOffice 24.8 Hjelp
Tjenesten Unntak er en samling metoder for å hjelpe til med kodefeilsøking i Basic- og Python-skript og i feilhåndtering i Basic-skript.
I Grunnleggende skript, når en kjøretidsfeil oppstår, hjelper metodene og egenskapene til Exception-tjenesten å identifisere feilkonteksten og tillate å håndtere den.
Tjenesten SF_Exception ligner VBA Err-objektet.
Egenskapen Number identifiserer feilen.
Bruk metoden Raise for å avbryte behandlingen. Metoden RaiseWarning kan brukes til å fange en anomali uten å avbryte makrokjøringen.
Feil og advarsler som oppstår med Unntak-tjenesten lagres i minnet og kan hentes ved hjelp av konsoll-metoden.
Tjenestekonsollen Unntak lagrer hendelser, variabelverdier og informasjon om feil. Bruk konsollen når Basic IDE ikke er lett tilgjengelig, for eksempel i Calc user defined functions (UDF) eller under behandling av hendelser.
Bruk metoden DebugPrint for å legge til relevant informasjon til konsollen. Konsolloppføringer kan dumpes til en tekstfil eller visualiseres i et dialogvindu.
Når det oppstår en feil, kan en programmakro:
Rapporter feilen i Unntak-konsollen
Informer brukeren om feilen ved å bruke enten en standardmelding eller en egendefinert melding
Stopp eventuelt utførelsen
I Python-skript brukes Unntak-tjenesten for det meste til feilsøkingsformål. Metoder som DebugPrint, Console og DebugDisplay er nyttige for raskt å skrive ut meldinger, loggdata og åpne konsollvinduet fra et Python-skript.
Ikke alle metoder og egenskaper er tilgjengelige for Python-skript siden Python-språket allerede har et omfattende unntakshåndteringssystem.
Følgende eksempler viser tre forskjellige tilnærminger til å kalle metoden Raise. Alle andre metoder kan utføres på lignende måte.
    SF_Exception.Raise(...)
  
    Dim exc : exc = SF_Exception
    exc.Raise(...)
  
    Dim exc : exc = CreateScriptService("Exception")
    exc.Raise(...)
  Kodebiten nedenfor oppretter en forekomst av Exception-tjenesten, logger en melding og viser Konsoll-vinduet.
    from scriptforge import CreateScriptService
    exc = CreateScriptService("Exception")
    someVar = 100
    exc.DebugPrint("Value of someVar", someVar)
    exc.Console()
  Egenskapene som er oppført nedenfor er kun tilgjengelige for Grunnleggende-skript.
| Navn | Skrivebeskyttet | Beskrivelse | 
|---|---|---|
| Description | Nei | Feilmeldingsteksten. Standardverdien er "" eller en streng som inneholder grunnleggende kjøretidsfeilmelding. | 
| Number | Nei | Koden til feilen. Det kan være en numerisk verdi eller tekst. Standardverdien er 0 eller den numeriske verdien som tilsvarer den grunnleggende kjøretidsfeilkoden. | 
| Source | Nei | Stedet i koden der feilen oppsto. Det kan være en numerisk verdi eller tekst. Standardverdien er 0 eller kodelinjenummeret for en standard grunnleggende kjøretidsfeil. | 
Å heve eller fjerne et unntak tilbakestiller egenskapene.
| Liste over metoder i unntakstjenesten | ||
|---|---|---|
Tilbakestiller gjeldende feilstatus og sletter SF_Exception-egenskapene.
    SF_Exception.Clear()
  Følgende eksempel viser hvordan du fanger et divisjon-for-null unntak, hvis feilkode er 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()
            'Hvis du deler med null, ignorer feilen
    End Sub
  For en fullstendig liste over grunnleggende kjøretidsfeilkoder, se Feilsøke et grunnleggende program.
Viser konsollmeldingene i en modal eller ikke-modal dialog. I begge modusene vises alle tidligere meldinger utstedt av en DebugPrint()-metode eller som er et resultat av et unntak. I ikke-modal modus legges påfølgende oppføringer til automatisk.
Hvis konsollen allerede er åpen, når den ikke er modal, sendes den til front.
En modal konsoll kan kun lukkes av brukeren. En ikke-modal konsoll kan enten lukkes av brukeren eller ved makroavslutning.
exc.Console(modal: bool = True)
modal: Bestem om konsollvinduet er modalt (Sann) eller ikke-modalt (Usann). Standardverdien er Sann.
        SF_Exception.Console(Modal := False)
  
    exc.Console(modal = False)
  Tømmer konsollen og beholder et valgfritt antall nylige meldinger. Hvis konsollen er aktivert i ikke-modal modus, oppdateres den.
exc.ConsoleClear(keep: int = 0)
behold: Antallet nylige meldinger som skal beholdes. Standardverdien er 0.
Følgende eksempel sletter konsollen ved å beholde de 10 siste meldingene.
        SF_Exception.ConsoleClear(10)
  
    exc.ConsoleClear(10)
  Eksporterer innholdet i konsollen til en tekstfil. Hvis filen allerede eksisterer og konsollen ikke er tom, vil den bli overskrevet uten forvarsel. Returnerer Sann hvis vellykket.
exc.ConsoleToFile(filename: str): bool
filnavn: Navnet på tekstfilen konsollen skal dumpes inn i. Navnet er uttrykt i henhold til den gjeldende FileName-egenskapen til SF_FileSystem-tjenesten. Som standard tillates URL-notasjon og det opprinnelige operativsystemets formater.
        SF_Exception.ConsoleToFile("C:\Documents\myFile.txt")
  
    exc.ConsoleToFile(r"C:\Documents\myFile.txt")
  Slår sammen alle argumentene til en enkelt lesbar streng og viser den i en MsgBox med et informasjonsikon og en OK-knapp.
Den siste strengen legges også til konsollen.
exc.DebugDisplay(arg0: any, [arg1: any, ...])
arg0[, arg1, ...]: Et hvilket som helst antall argumenter av enhver type.
    SF_Exception.DebugDisplay("Current Value", someVar)
  
    exc.DebugDisplay("Current Value", someVar)
  Setter sammen alle de gitte argumentene til en enkelt lesbar streng og legger den til som en ny oppføring i konsollen.
exc.DebugPrint(arg0: any, [arg1: any, ...])
arg0[, arg1, ...]: Et hvilket som helst antall argumenter av enhver type.
    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
  Viser listen over argumenter i en lesbar form i plattformkonsollen. Argumenter er atskilt med et TAB-tegn (simulert med mellomrom).
Den samme strengen legges til ScriptForge feilsøkingskonsollen.
Hvis Python shell (APSO) er aktiv, skrives PythonPrint-innhold til APSO-konsollen i stedet for plattformkonsollen.
  exc.PythonPrint(arg0: any, [arg1: any, ...])
  arg0[, arg1, ...]: Et hvilket som helst antall argumenter av enhver type. Maksimal lengde på hvert enkelt argument er 1024 tegn.
    exc.PythonPrint(a, Array(1, 2, 3), , "line1" & Chr(10) & "Line2", DateSerial(2020, 04, 09))
  I Python bruk en utskrifts-setning for å skrive ut til APSO-konsollen eller bruk DebugPrint-metoden for å skrive ut til ScriptForges konsollen.
Åpner et APSO Python-skall som et ikke-modalt vindu. Python-skriptet fortsetter å kjøre etter at skallet er åpnet. Utdataene fra utskrifts-setninger inne i skriptet vises i skallet.
Åpner et APSO Python-skall som et ikke-modalt vindu. Python-skriptet fortsetter å kjøre etter at skallet er åpnet. Utdataene fra print-setninger inne i skriptet vises i skallet.
exc.PythonShell(variables: dict)
variabler: en Python-ordbok med variabelnavn og verdier som sendes videre til APSO Python-skallet. Som standard sendes alle lokale variabler ved hjelp av Pythons innebygde locals() funksjon.
Eksemplet nedenfor åpner APSO Python-skallet og sender alle globale og lokale variabler med tanke på konteksten der skriptet kjører.
    exc.PythonShell({**globals(), **locals()})
  Når APSO Python-skallet er åpent, vil alle påfølgende utdata som skrives ut av skriptet bli vist i skallet. Derfor vil strengen som er skrevet ut i eksemplet nedenfor vises i Python-skallet.
    exc.PythonShell()
    print("Hei verden!")
  Genererer en kjøretidsfeil. En feilmelding vises til brukeren og rapporteres i konsollen. Kjøringen er stoppet. Metoden Raise() kan plasseres i den normale skriptflyten eller i en dedikert feilhåndteringsrutine.
    SF_Exception.Raise([Number As Variant], [Source As Variant], [Description As String])
  Kodebitene som presenteres neste er likeverdige. De viser alternative måter å gjøre unntak på med kode 2100.
    SF_Exception.Raise(2100)
  
    SF_Exception.Number = 2100
    SF_Exception.Raise()
  
    SF_Exception.Raise Number := 2100
  Nummer: Feilkoden, som et tall eller som en streng. Standardverdien er den for Err Grunnleggende innebygd funksjon.
Kilde: Plasseringen av feilen, som et tall eller som en streng. Standardverdien er den for Erl Grunnleggende innebygd funksjonen.
Beskrivelse: Meldingen som skal vises til brukeren og rapporteres i konsollen. Standardverdien er den for Error$ Grunnleggende innebygde funksjonen.
    Sub Example_Raise()
        Dim a, b, c
        On Local Error GoTo Catch
        Try:
            a = 10 : b = 0
            c = a / b
            '...
            Exit Sub
        Catch:
            'Se varianter nedenfor ...
    End Sub
  Slik gjør du et unntak med standardverdiene:
    Catch:
        SF_Exception.Raise()
  Slik oppretter du et unntak med en bestemt kode:
    Catch:
        SF_Exception.Raise(11)
  Slik erstatter du den vanlige meldingen:
    Catch:
        SF_Exception.Raise(, , "Det er ikke en god idé å dele på null.")
  Slik rapporterer du en applikasjonsfeil:
    Catch:
        SF_Exception.Raise("MyAppError", "Example_Raise()", "Noe galt skjedde!")
  Denne metoden har nøyaktig samme syntaks, argumenter og oppførsel som Raise()-metoden.
Men når en advarsel sendes, stanses ikke kjøringen av makroen.
    SF_Exception.RaiseWarning([Number As Variant], [Source As Variant], [Description As String])
  
    SF_Exception.RaiseWarning(Source:="Example_Raise()", _
        Description:="Something wrong happened !", _
        Number:="MyAppError")