Słužba ScriptForge.Exception

Słužba Exception je zběrka metodow, kotrež při pytanju za zmylkami w kodźe skriptow Basic a Python a při wobchadźenju ze zmylkami w skriptach Basic pomhaja.

Hdyž w skriptach Basic wuwjedźenskočasowy zmylk nastawa, pomhaja metody a kajkosće słužby Exception zmylkowy kontekst identifikować a dowolić, z nim wobchadźeć.

tip

Přez słužbu Exception wuwabjene zmylki a warnowanja so w składźe składuja a dadźa so z pomocu metody Console wotwołać.


Konsola słužby Exception podawki, wariablowe hódnoty a informacije wo zmylkach składuje. Wužiwajće konsolu, hdyž Basic IDE lochko přistupny njeje, na přikład w swójskich funkcijach Calc (UDF) abo za předźěłowanje podawkow.

Wužiwajće metodu DebugPrint, zo byšće konsoli relewantne informacije přidał. Konsolowe zapiski dadźa so do tekstoweje dataje wudać abo w dialogowym woknje wizualizować.

Hdyž zmylk nastawa, móže nałoženske makro:

  1. Zmylk w konsoli Exception zdźělić

  2. Wužiwarja wo zmylku z pomocu standardneje abo swójskeje powěsći informować

  3. Na přeće wuwjedźenje zastajić

W skriptach Python so słužba Exception zwjetša za zaměry pytanja zmylkow wužiwa. Metody kaž DebugPrint, Console a DebugDisplay su wužitne, zo bychu spěšnje zdźělenki ćišćeli, daty protokolowali a konsolowe wokno ze skripta Python wočinili.

note

Nic wšě metody a kajkosće su za skripty Python k dispoziciji, dokelž rěč Python hižo ma wobšěrny system za wobchadźenje z wuwzaćemi.


Słužbowe wuwołanje

Před wužiwanjom słužby Exception dyrbi so biblioteka ScriptForge začitać abo importować:

note

• Makra Basic sej wužaduja, zo so biblioteka ScriptForge z pomocu slědowaceho přikaza začituje:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Skripty Python sej import z modula scriptforge wužaduja:
from scriptforge import CreateScriptService


W Basic

Slědowace přikłady tři rozdźělne móžnosće pokazuja, zo bychu metodu Raise wuwołali. Wšě druhe metody dadźa so na podobne wašnje wuwjesć.


    SF_Exception.Raise(...)
  

    Dim exc : exc = SF_Exception
    exc.Raise(...)
  

    Dim exc : exc = CreateScriptService("Exception")
    exc.Raise(...)
  
W Python

Slědowaca kodowa šlipka instancu słužby Exception wutworja, protokoluje zdźělenku a pokazuje konsolowe wokno.


    from scriptforge import CreateScriptService
    exc = CreateScriptService("Exception")
    someVar = 100
    exc.DebugPrint("Value of someVar", someVar)
    exc.Console()
  

Kajkosće

Deleka podate kajkosće su jenož za skripty Basic k dispoziciji.

Mjeno

Přećiwo pisanju škitany

Wopisanje

Description

Tekst zmylkoweje zdźělenki.

Standardna hódnota je "" abo znamješkowy rjećazk, kotryž wuwjedźenskočasowu zmylkowu zdźělenku Basic wobsahuje.

Number

Kod zmylka. Móže numeriska hódnota abo tekst być.

Standardna hódnota je 0 abo numeriska hódnota, kotraž kodej wuwjedźenskočasoweho zmylka wotpowěduje.

Source

Městno w kodźe, hdźež zmylk je nastał. Móže numeriska hódnota abo tekst być.

Standardna hódnota je 0 abo čisło kodoweje linki za standardny wuwjedźenskočasowy zmylk Basic.


tip

Wuwabjenje abo zhašenje Exception jeho kajkosće wróćo staji.


note

Error code range 0-2000 is reserved for LibreOffice Basic. User-defined errors may start from higher values in order to prevent collision with LibreOffice Basic future developments.


Lisćina metodow w słužbje Exception

Clear
Console
ConsoleClear
ConsoleToFile

DebugDisplay
DebugPrint
PythonPrint

PythonShell
Raise
RaiseWarning


Clear

Staji aktualny zmylkowy status wróćo a zhaša kajkosće SF_Exception.

note

This method is only available for Basic scripts.


Syntaksa:


    SF_Exception.Clear()
  

Přikład:

Slědowacy přikład pokazuje, kak so wuwzaće diwizije přez nulu wotpopaduje, kotrejež zmylkowy kod je 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()
            ' Ignoruje zmylk, jeli diwizija přez nulu
    End Sub
  
tip

Za dospołnu lisćinu wuwjedźenskočasowych zmylkowych kodo hlejće Program Basic za zmylkami přepytać.


Console

Pokazuje konsolowe zdźělenki w modalnym abo njemódalnym dialogu. We woběmaj metodomaj so wšě zańdźene zdźělenki pokazuja, kotrež su so přez metodu DebugPrint() wudawali abo z wuwzaća rezultuja. W njemodalnym modusu so na so sćěhowace zapiski awtomatisce přidawaja.

Jeli konsola je hižo wočinjena, so do prědka přinjese, hdyž je njemodalna.

Modalna konsola da so jenož wot wužiwarja začinić. Njemodalna konsola da so pak wot wužiwarja pak při kónčenju makra začinić.

Syntaksa:

exc.Console(modal: bool = True)

Parametry:

modal: Postaja, hař konsolowe wokno je modalne (True) abo njemodalne (False). Standardna hódnota je True.

Přikład:

W Basic

        SF_Exception.Console(Modal := False)
  
W Python

    exc.Console(modal = False)
  

ConsoleClear

Zhaša konsolu a wobchowuje opcionalnu ličbu najnowšich zdźělenkow. Konsola so aktualizuje, jeli je w njemodalnym modusu zaktiwizowana.

Syntaksa:

exc.ConsoleClear(keep: int = 0)

Parametry:

keep: Ličba najnowšich zdźělenkow, kotrež so maja wobchować. Standardna hódnota je 0.

Přikład:

Slědowacy přikład konsolu prózdni a wobchowuje 10 najnowšich zdźělenkow.

W Basic

        SF_Exception.ConsoleClear(10)
  
W Python

    exc.ConsoleClear(10)
  

ConsoleToFile

Eksportuje wobsah konsole do tekstoweje dataje. Jeli dataja hižo eksistuje a konsola prózdna njeje, přepisuje so bjez warnowanja. Wróći True, jeli je wuspěšna.

Syntaksa:

exc.ConsoleToFile(filename: str): bool

Parametry:

filename: Mjeno tekstoweje dataje, do kotrejež so ma konsola składować. Mjeno so po aktualnej kajkosći FileNaming słužby SF_FileSystem zwuraznja. Po standardźe stej notacija URL a natiwny format dźěłoweho systema dowolenej.

Přikład:

W Basic

        SF_Exception.ConsoleToFile("C:\Documents\myFile.txt")
  
W Python

    exc.ConsoleToFile(r"C:\Documents\myFile.txt")
  

DebugDisplay

Zwjazuje wšě argumenty do wot čłowjeka čitajomneho znamješkoweho rjećazka a pokazuje jón w MsgBox z informaciskim symbolom a tłóčatkom W porjadku.

Kónčny znamješkowy rjećazk so tež do konsole přidawa.

Syntaksa:

exc.DebugDisplay(arg0: any, [arg1: any, ...])

Parametry:

arg0[, arg1, ...]: Někajka ličba argumentow někajkeho typa.

Přikład:

W Basic

    SF_Exception.DebugDisplay("Current Value", someVar)
  
W Python

    exc.DebugDisplay("Current Value", someVar)
  

DebugPrint

Zjima wšě podate argumenty k jednotliwemu wot čłowjeka čitajomnemu znamješkowemu rjećazkej a přidawa jón jako nowy zapisk w konsoli.

Syntaksa:

exc.DebugPrint(arg0: any, [arg1: any, ...])

Parametry:

arg0[, arg1, ...]: Někajka ličba argumentow někajkeho typa.

Přikład:

W Basic

    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
  
W Python

    exc.DebugPrint(None, [1, 2, 3], "line1\nline2")
    # None  [1, 2, 3]  line1\nline2
  

PythonPrint

Pokazuje lisćinu argumentow w čitajomnej formje w konsoli platformy. Argumenty so přez tabulator (↹) wotdźěleja (simulowany přez mjezoty).

Samsny znamješkowy rjećazk so konsoli ScriptForge za pytanje zmylkow přidawa.

Jeli shell Python (APSO) je aktiwny, so wobsah PythonPrint do konsole APSO město do konsole platformy pisa.

note

This method is only available for Basic scripts.


Syntaksa:


  exc.PythonPrint(arg0: any, [arg1: any, ...])
  

Parametry:

arg0[, arg1, ...]: Někajka ličba argumentow někajkeho typa. Maksimalna dołhosć kóždeho jednotliweho argumenta je 1024 znamješkow.

Přikład:


    exc.PythonPrint(a, Array(1, 2, 3), , "line1" & Chr(10) & "Line2", DateSerial(2020, 04, 09))
  
note

Wužiwajće přikaz print w Python, zo byšće konsolu APSO ćišćał abo wužiwajće metodu DebugPrint, zo byšće konsolu ScriptForge ćišćał.


PythonShell

Wočinja shell APSO Python jako njemodalne wokno. Skript Python so dale wuwjedźe, hdyž shell je wočinjeny. Wudaće z přikazow print w skripće so w shellu pokazuja.

Jenož jednotliwa instanca shella APSO Python da so kóždy čas wočinić. Tohodla so potom wuwołanje tuteje metody so njewuskutkuje, jeli shell Python je hižo wočinjeny.

warning

This method requires the installation of the APSO (Alternative Script Organizer for Python) extension. In turn APSO requires the presence of LibreOffice Python scripting framework. If APSO or Python are missing, an error occurs.


Syntaksa:

exc.PythonShell(opt variables: dict, background = 0xFDF6E3, foreground = 0x657B83)

Parametry:

variables: słownik Python z wariablowymi mjenami a hódnotami, kotrež so do shella APSO Pythan přepodawaja. Po standardźe so wšě lokalne wariable z pomocu zatwarjeneje funkcije locals() Python přeopodawaja.

background: Pozadkowa barba konsole, podata jako cyłoličbowa 24-bitowa jódnota RGB. Standardny pozadk je pozadk APSO.

foreground: Prědkowa barba konsole, podata jako cyłoličbowa 24-bitowa hódnota RGB. Standardny prědk je prědk APSO.

Přikład:

Slědowacy přikład shell APSO Python wočinja a přepodawa wšě globalne a lokalne wariable dźiwajo na kontekst, w kotrymž so skript běži. Konsola so z běłymi znamješkami na čornym pozadku pokazuje.


    exc.PythonShell({**globals(), **locals()}, \
        background = 0x0, foreground = 0xFFFFFF)
  

Hdyž shell APSO Python je wočinjeny, so naslědne wudaće, kotrež přez skript ćišći, w shellu pokazuje. Tohodla so znamješkowy rjećazk, kotryž w slědowacym přikładźe ćišći, w shellu Python pokazuje.


    s = CreateScriptService('Basic')
    RED, BLUE = s.RGB(255,0,0), s.RGB(0,0,255)
    exc.PythonShell(background=RED, foreground=BLUE)
    print("Witaj swět!")
  

Raise

Generuje wuwjedźenskočasowy zmylk. Zmylkowa zdźělenka so wužiwarjej pokazuje a w konsoli zdźěla. Wuwjedźenje so zastaji. Metoda Raise() da so w normalnym skriptowym wotběhu abo w dedikowanej rutinje za wobchadźenje ze zmylkami.

note

This method is only available for Basic scripts.


Syntaksa:


    SF_Exception.Raise(Number := Err, [Source := Erl], [Description := Error$])
  

Prezentowane kodowe šlipki su runohódne. Pokazuja alternatiwne móžnosće za wuwabjenje wuwzaća z kodom 2100.


    SF_Exception.Raise(2100)
  

    SF_Exception.Number = 2100
    SF_Exception.Raise()
  

    SF_Exception.Raise Number := 2100
  

Parametry:

Number: Zmylkowy kod, jako ličba abo znamješkowy rjećazk. Standardna hódnota je hódnota zatwarjeneje funkcije Err Basic. W tutym padźe je Number opcionalny.

note

Error code range 0-2000 is reserved for LibreOffice Basic. User-defined errors may start from higher values in order to prevent collision with LibreOffice Basic future developments.


Source: Městno zmylka, jako ličba abo znamješkowy rjećazk. Standardna hódnota je hódnota zatwarjeneje funkcije Erl Basic.

Description: Powěsć, kotraž so ma wužiwarjej pokazać a w konsoli zdźělił. Standardna hódnota je hódnota zatwarjenje funkcije Error$ Basic.

Přikład:


    Sub Example_Raise()
        Dim a, b, c
        On Local Error GoTo Catch
        Try:
            a = 10 : b = 0
            c = a / b
            '...
            Exit Sub
        Catch:
            ' Hlej warianty deleka …
    End Sub
  

Zo byšće wuwzaće ze standardnymi hódnotami wuwabił:


    Catch:
        SF_Exception.Raise()
  

Zo byšće wuwzaće z wěstym kodom wuwabił:


    Catch:
        SF_Exception.Raise(11)
  

Zo byšće zwučenu powěsć wuměnił:


    Catch:
        SF_Exception.Raise(, , "Njeje dobra ideja, přez nulu dźělić.")
  

Zo byšće nałoženski zmylk wuwabił:


    Catch:
        SF_Exception.Raise("MyAppError", "Example_Raise()", "Něšto je so nimokuliło!")
  

RaiseWarning

Tuta metoda ma dokładnje samsnu syntaksu, argumenty a zadźerženje kaž metoda Raise().

Ale hdyž so warnowanje wudawa, so wuwjedźenje makra njezastaji.

note

This method is only available for Basic scripts.


Syntaksa:


    SF_Exception.RaiseWarning([Number As Variant], [Source As Variant], [Description As String])
  

Parametry:

Number: Zmylkowy kod, jako ličba abo znamješkowy rjećazk. Standardna hódnota je hódnota zatwarjeneje funkcije Err Basic. W tutym padźe je Number opcionalny.

note

Error code range 0-2000 is reserved for LibreOffice Basic. User-defined errors may start from higher values in order to prevent collision with LibreOffice Basic future developments.


Source: Městno zmylka, jako ličba abo znamješkowy rjećazk. Standardna hódnota je hódnota zatwarjeneje funkcije Erl Basic.

Description: Powěsć, kotraž so ma wužiwarjej pokazać a w konsoli zdźělił. Standardna hódnota je hódnota zatwarjenje funkcije Error$ Basic.

Přikład:


    SF_Exception.RaiseWarning(Source:="Example_Raise()", _
        Description:="Něšto je so nimokuliło!",_
        Number:="MyAppError")
  

Prošu podpěrajće nas!