Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB.Net] Virheilmoitus debuggaksessa

novice [04.03.2010 19:00:20]

#

Debuggaus toimi moitteetta kuten yleensä aina, sitten muutin designerissä kolmen labelin fontin lihavoiduksi ja ehkä jotain pientä koodissa (en muista enää). Sen jälkeen debuggausta käynnistettäessä tulee seuraava virheilmoitus:

InvalidOperationException was unhandled
An error occurred creating the form. See Exception.InnerException for details. The error is: Object reference not set to an instance of an object.

Mistä moinen johtuu? Miten korjaan virheen?

Metabolix [04.03.2010 19:27:03]

#

Jotain muuttujaa ei ole alustettu (ts. oliota ei ole luotu) ennen käyttöä. Voisit ottaa pääohjelmassa tuon poikkeuksen kiinni ja tulostaa debug-tiedot (varmaankin e.InnerException.StackTrace), jotta saisit rivinumeron selville.

novice [04.03.2010 20:34:53]

#

Tuota StackTracea(mitä lie tarkoittaakaan) juuri tutkailin ja rivinumeroita oli muutamia, eikä niistä löytynyt mitään virhettä.
Ongelma kuitenkin ratkesi. Virhe tapahtuu NumericUpDown kontrollin ValueChanged-eventissä jota näemmä kutsutaan jo kontrollin luonti vaiheessa jolloin eventin laskutoimituksissa käytettävä muuttuja omaa vielä arvon 'nothing'.

En ole tiennytkään, että em. tapaus on mahdollinen.... olenko vahingossa laittanut jonkin asetuksen päälle? Miten saisin tyylikkäästi ohitettua tapahtuman suorittamisen?

Metabolix [04.03.2010 20:48:47]

#

Stack trace kertoo, mikä funktio on kutsunut mitäkin, jotta on päästy tiettyyn kohtaan ohjelmaa. Virherivi siis löytyy listan jommastakummasta päästä; Javassa viimeisin sijainti mainitaan ensimmäisenä mutta joissain muissa kielissä viimeisenä. (En muista .NETistä, Googlella varmasti löytyisi.)

Voit tapahtuman alussa tarkistaa kyseisen muuttujan arvon, tai voit lisätä ohjelmaan muuttujan, joka kertoo, onko alustus suoritettu. Ensimmäinen vaihtoehto on minusta selkeämpi, koska siinä koodista näkee suoraan, minkä muuttujan takia laskut täytyy jättää ajamatta.

novice [04.03.2010 20:53:33]

#

Asia selvä... kiitos nopeista vastauksista.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta