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ć.

Symbol Pokiw

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ć

Hdyž so zmylk we wuwołanju API ScriptForge namaka, so zadźerženje nałoženja po wěstych kajkosćach postaja:

  1. Protokolujće zmylk we wuwzaćowej konsoli. To so přeco čini.

  2. Informujće wužiwarja wo zmylku pak ze standardnej pak z lokalizowanej powěsću.

    Zo byšće ćichi modus wunuzował, stajće:

    exception.ReportScriptErrors = False ' Default = True

  3. Zo njebyšće wuwjedźenje aktualneho makra zastajił, stajće:

    exception.StopWhenError = False ' Default = True


    Potom ma zmysł, hódnoty wuslědźić, prjedy hač so z předźěłanjom pokročuje:

    exception.ReturnCode ' Short error description

    exception.ReturnCodeDescription ' Long error description

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.

Symbol za Notica

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ć:

Symbol za Notica

• 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

Symbol Pokiw

Kajkosće, kotrež su deleka nalistowane, su jenož w skriptach Basic k dispoziciji. Zwisuja ze zmylkami, kotrež w makrowej instrukciji wustupuja.


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.


Symbol Pokiw

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


Symbol za Notica

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.


Symbol Pokiw

Kajkosće, kotrež si deleka nalistowane, su za skripty Basic a Python k dispoziciji. Zwisuja ze zmylkami, kotrež so jenož přez API ScriptForge namakaja.


Mjeno

Přećiwo pisanju škitany

Typ wróćenja

Wopisanje

ReportScriptErrors

Boolean

Podawa, hač so skriptowe zmylki w zdźělenskim polu pokazuja, hdyž wustupuja.

Standardna hódnota je False.

ReturnCode

Haj

Znamješkowy rjećazk

Kod, kotryž so přez poslednje wuwołanje API ScriptForge z wužiwarskeho skripta wróća.

Je znamješkowy rjećazk z nulowej dołhosću, jeli so wšitko bjez zmylka wuwjedźe.

ReturnCodeDescription

Haj

Znamješkowy rjećazk

Wopisanje koda, kotryž so přez poslednje wuwołanje API ScriptForge z wužiwarskeho skripta wróća.

Je znamješkowy rjećazk z nulowej dołhosću, jeli so wšitko bjez zmylka wuwjedźe.

StopWhenError

Boolean

Podawa, hač so makro zastaja, hdyž ScriptForge zmylk wužiwarskeho skripta namaka.


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.

Symbol za Notica

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
  
Symbol Pokiw

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.

Symbol za Notica

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))
  
Symbol za Notica

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.

Warnowanski symbol

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.

Symbol za Notica

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.

Symbol za Notica

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.

Symbol za Notica

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.

Symbol za Notica

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!

Prošu podpěrajće nas!