Visual Basic for Applications:
Kirjoittaminen vakiovirheeseen
Kuinka:
VBA:ssa, koska suoraa sisäänrakennettua funktiota nimenomaan virheen vakiotulostukseen ei ole kuten joissakin muissa ohjelmointikielissä, yleinen kiertotapa sisältää Debug.Print
-komennon käytön kehitysvaiheen virhetulosteille tai oman lokitusfunktion luomisen, joka jäljittelee tätä käyttäytymistä tuotantosovelluksissa. Alla on esimerkki siitä, miten voisit toteuttaa ja käyttää tällaista funktiota:
Sub WriteToErrorLog(msg As String)
' Oma funktio vakiovirheen kirjoittamisen jäljittelyyn
' Todellisessa käyttöönotossa tämä voisi kirjoittaa erilliseen lokitiedostoon tai omistettuun debuggausikkunaan
Open "ErrorLog.txt" For Append As #1 ' Vaihda "ErrorLog.txt" haluamaksesi lokitiedostopoluksi
Print #1, "VIRHE: " & msg
Close #1
Debug.Print "VIRHE: " & msg ' Tulostaa myös Välitön-ikkunaan IDE:ssä kehittäjän virheenjäljitykseen
End Sub
Sub Demonstration()
' Esimerkki WriteToErrorLog-funktion käytöstä
WriteToErrorLog "Virhe tapahtui pyyntöäsi käsiteltäessä."
End Sub
Esimerkkituloste “ErrorLog.txt”-tiedostossa voisi näyttää tältä:
VIRHE: Virhe tapahtui pyyntöäsi käsiteltäessä.
Ja VBA:n IDE:n Välitön-ikkunassa:
VIRHE: Virhe tapahtui pyyntöäsi käsiteltäessä.
Syväsukellus
Visual Basic for Applications ei itsessään sisällä omistettua mekanismia kirjoittamaan vakiovirheeseen johtuen sen syvästä integroinnista emäntäsovellusten, kuten Excel, Word tai Access, kanssa, jotka perinteisesti nojaavat graafisiin käyttöliittymiin eivätkä konsolitulosteeseen. Tämä on merkittävä eroavaisuus konsolipohjaisiin sovelluksiin verrattuna, jotka yleensä kehitetään kielillä kuten C tai Python, jossa vakiotuloste ja vakiovirhevirrat ovat peruskäsitteitä.
Historiallisesti VBA:n keskittyminen on aina ollut enemmän vuorovaikutuksessa sen emäntäsovellusten asiakirjamallien kanssa ja vähemmän perinteisissä sovelluslokitusmekanismeissa. Siksi kehittäjät turvautuvat usein oman lokitusratkaisun toteuttamiseen, kuten esimerkissä nähtiin, tai käyttävät Windows API -kutsuja edistyneempien virheiden käsittelyn ja lokituksen tarpeiden varten.
Vaikka esitelty lähestymistapa tarjoaa kiertotien, kehittäjät, jotka etsivät kestävämpää lokitusta ja virheenkäsittelyä, saattavat tutkia ulkoisten järjestelmien tai kirjastojen integrointia, jotka kykenevät monimutkaisempaan lokitukseen. Nykyaikaisessa kehityksessä, erityisesti vianetsinnän ja ylläpidon näkökulmasta, selkeän, kontekstuaalisen ja erillisen vakio- ja virhelokitusten merkitystä ei voi liikaa korostaa, mikä ajaa monia etsimään ratkaisuja VBA:n natiivien kykyjen ulkopuolelta.