Active Server Pages

ASP-koulutus / kurssit v. 2008

Kurssit saatavilla kautta Suomen. Tule, tutustu ja varaa oma koulutustapahtumasi jo tänään. Kurssit järjestää IT-koulutuksen asiantuntijasi, Koulutus- ja konsultointipalvelu KK Mediat

 

ASP:n virheenkäsittely

Yleisesti

Virheet ovat luonnollinen osa mitä tahansa ohjelmointia. Osa virheistä aiheuttaa näkyvän ja helposti paikannettavan virheen, osa salakavalasti kuormittaa sovellusta/järjestelmää aiheuttaen lopulta palvelun kaatumisen. Tämä artikkeli käy lävitse joitakin keskeisiä menetelmiä virheiden ehkäisemiseksi VBScript pohjaisessa ASP-ohjelmoinnissa.

Kiitettävän VBScript ASP:n virheenkäsittely saa tarkkuudestaan. Mikäli virhetilanteen yhteydessä ilmoitetaan rivinumero tai virhekoodi, on se erittäin suurella todennäköisyydellä virheen alkulähde. Moderneissa oliopohjaisissa ohjelmointiteknologiossa rivinumerot ovat enemmän tai vähemmän suuntaa antavia mm. "virheen kuplinnan" takia.

Verrattuna moderneihin ohjelmointiteknologioihin (esim. ASP.NET, PHP, JSP jne), VBScript ASP:n sisältämä virheenkäsittelyvalmius on heikko. Tarjolla ei ole mm. normaalia try...catch-mallia. Omana aikanaan VBScript ASP:n sisältämä virheenkäsittely oli kuitenkin erittäin riittävä, ja vielä nykyisinkin se on erittäin käyttökelpoinen kunhan muistaa noudattaa tiettyjä työskentelymenetelmiä.

Muuttujien määrittäminen ja nimeäminen

Oletusarvoisesti VBScript ei edellytä muuttujien määrittämistä, tästä syystä se ei myöskään tarkista onko muuttuja alustettu aiemmin. Tämä voi johtaa hankalasti havaittaviin virhetilanteisiin mm. kirjoitusvirheiden yhteydessä. Alla olevassa esimerkissä sama kirjoitusvirhe esiintyy kahdessa eri kohtassa - jakolaskun yhteydessä se aiheuttaa helposti havaittavan virheen, yhteenlaskun yhteydessä se ei aiheuta näkyvää virhetilannetta.

<%
luku1 = 2
luku2 = 5
' ja alla virhe: jakajan tulisi olla luku2, ei luku
jako = luku1/luku
Response.Write jako
' lopputuloksena on Microsoft VBScript runtime error '800a000b', Division by zero

' sen sijaan tämä ei aiheuta virhettä: 
summa = luku1 +luku
Response.Write summa 
' tulostaa 2, vaikka tavoitteena olisikin ollut luku 7
%> 

Kirjoitusvirheiden ym. inhimillisten tekijöiden aiheuttamaa vahinkoa voi vähentää ottamalla käyttöön VBScript-kielen "Option Explicit"-rakenteen. Tämä pakottaa VBScript-kääntäjän tarkastamaan onko muuttuja määritelty aiemmin (nk. Strict-tila). Mikäli asiaankuuluvaa muuttujamäärittelyä ei löydy, palauttaa skripti virheilmoituksen, joka huomauttaa määrittelemättömästä muuttujasta. Option Explicit rakenne tulee merkitä ASP-sivun alkuun, välittömästi direktiivien jälkeen:


<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Option Explicit %>
<%
' määritellään käytettävät muuttujat
Dim luku1, luku2

luku1 = 2
luku2 = 5

summa = luku1 +luku
Response.Write summa 
' tulostaa 2, vaikka tavoitteena olisikin ollut luku 7
%>
' virheilmoitus: Microsoft VBScript runtime error '800a01f4'  Variable is undefined: 'luku', line 8

Toinen muuttujien kanssa työskentelyyn tekniikka liittyy muuttujien nimeämiseen. Useimmissa ohjelmointikielissä on käytössä nk. koodauskonventio, joka määrittelee mm. miten muuttujat nimetään. Tämä varmistaa yhtäläisen työskentelytekniikan - esim. kaikki sovelluksen käyttämät muuttujat nimetään aina pienillä kirjaimilla, funktioiden nimet alkavat pienellä kirjaimella, vakiot kirjoitetaan kokonaan ISOILLA kirjaimilla jne. ASP:llä ei ole olemassa virallista koodauskonventiota, mutta esim. ASP.NET, Java tms. kielen konvention voi ottaa pienin mukautuksin käyttöön ASP:n kanssa. Itse konvention syntaksia tärkeämpää on, että käytössä on jokin työskentelyä ohjaava ohje, joka varmistaa yhtäläisen työskentelytavan skriptistä toiseen ja eri sovellusten välillä.

Tutustu artikkelin muihin osiin:
»»» ASP »»» Muuttujien määrittäminen ja koodauskonventio
»»» ASP »»»On Error Resume Next ja Err-olio
»»» ASP »»»MS Script Debugger / Editor

Tallenna tämä sivu kirjanmerkkeihin!

 

2kmediat.com, ©2000-2008 Koulutus- ja konsultointipalvelu KK Mediat.
Tekijänoikeuksia koskeva tiedonanto | Tietosuojalausunto | Sivukartta