Visual Basic for Applications:
Virheiden käsittely
Kuinka:
VBA:ssa virheenkäsittely toteutetaan tyypillisesti käyttämällä On Error
-lauseketta, joka ohjeistaa VBA:ta miten edetä kun virhe tapahtuu. Yleisimmät virheenkäsittelystrategiat sisältävät On Error GoTo
-merkin, On Error Resume Next
ja On Error GoTo 0
.
Esimerkki 1: Käyttäen On Error GoTo
Tämä lähestymistapa mahdollistaa ohjelman ohjaamisen tiettyyn koodiosioon, joka on merkitty välittömästi virheen havaitsemisen jälkeen.
Sub ErrorHandlerExample()
On Error GoTo ErrHandler
Dim intDivision As Integer
intDivision = 5 / 0 ' Tämä aiheuttaa nollalla jakamisen virheen
Exit Sub
ErrHandler:
MsgBox "An Error Occurred: " & Err.Description, vbCritical, "Error!"
Resume Next
End Sub
Tässä esimerkissä mikä tahansa ajonaikainen virhe laukaisee siirtymisen ErrHandler
-kohtaan, näyttää virheilmoituksen ja sen jälkeen jatkaa seuraavalla rivillä virheen jälkeen.
Esimerkki 2: Käyttäen On Error Resume Next
Tämä strategia ohjeistaa VBA:ta jatkamaan seuraavan koodirivin suorittamista, vaikka virhe tapahtuisi, mikä voi olla hyödyllistä odotettujen vaarattomien virheiden kohdalla tai kun suunnittelet käsitteleväsi virheen myöhemmin suorituksessa.
Sub ResumeNextExample()
On Error Resume Next
Dim intDivision As Integer
intDivision = 5 / 0 ' Tämä ei pysäytä ohjelmaa; virhe ohitetaan
' Tarkista, tapahtuiko virhe
If Err.Number <> 0 Then
MsgBox "An Error Occurred: " & Err.Description, vbExclamation, "Handled Error"
' Nollaa virhe
Err.Clear
End If
End Sub
Tässä tapauksessa ohjelma ei keskeydy virheeseen; se tarkistaa, tapahtuiko virhe, käsittelee sen jos niin on, ja sitten nollaa virheen.
Syväsukellus
Historiallisesti virheenkäsittely ohjelmointikielissä on kehittynyt yksinkertaisista goto-lauseista monimutkaisempiin mekanismeihin kuten poikkeuksiin (exceptions) kielissä kuten Java ja C#. VBA:n virheenkäsittely, vaikka ei olekaan yhtä voimakas tai joustava kuin modernit poikkeuskäsittelyt, palvelee tarkoitustaan kielen sovelluksessa Microsoft Office -ympäristöjen tehtävien automatisoinnissa.
VBA:n virheenkäsittelyn ensisijainen rajoitus piilee sen jokseenkin kömpelössä ja manuaalisessa lähestymistavassa, joka vaatii virheenkäsittelykoodin huolellista sijoittelua ja selkeää ymmärrystä suorituksen kulusta. Nykyaikaiset ohjelmointikielet tarjoavat tyypillisesti elegantimpia ratkaisuja, kuten try-catch-lohkot, jotka automaattisesti hoitavat virran siirtymisen virheenkäsittelykoodiin ilman manuaalisia tarkistuksia tai hyppyjä koodin suorituksessa.
Huolimatta näistä rajoituksista, VBA:n virheenkäsittelymekanismit soveltuvat useimpiin automatisointitehtäviin ja kun niitä käytetään oikein, ne voivat merkittävästi vähentää käsittelemättömien virheiden aiheuttamien ongelmien todennäköisyyttä käyttäjille. Lisäksi VBA:n virheenkäsittelyn ymmärtäminen voi tarjota näkemyksiä vanhempiin ohjelmointiparadigmoihin ja virheenkäsittelystrategioiden kehitykseen ohjelmistokehityksessä.