Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Windowsin sovellusvirhe-ilmoitukset näkyviin

hohoo [06.09.2011 17:55:01]

#

Windows näyttää ohjelman kaatuessa yleensä mitään kertomattoman ilmoituksen "Ohjelma lakkasi toimimasta". Jotkut ohjelmat näyttävät kuitenkin "paremman" virheilmoituksen, esim (suomeksi ja englanniksi):

lainaus:

Sovellusvirhe

Käsky osoitteessa "(osoite)" viittasi muistiin osoitteessa "(osoite)". Muisti ei voi olla "(read/written)".

Lopeta ohjelma napsauttamalla OK

lainaus:

Application error

The instruction at "(address)" referenced memory at "(address)". The memory could not be "(read/written)".

Click on OK to terminate the program

http://www.beetrootstreet.com/_media/images/blog/referenced_memory.gif
http://i52.tinypic.com/73cr5f.png

Nämä lienevät Windowsin mukana tulevia oletusvirheilmoituksia, eikä sovellusten määrittämiä (SetUnhandledExceptionFilter tms.).

Miten voin käskeä omaa ohjelmaani käyttämään näitä ilmoituksia "ohjelma lakkasi toimimasta" -ilmoituksen sijasta?

Lazzu [16.09.2011 05:22:10]

#

Itse teen ainakin C# kanssa näin:

static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {

            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            catch (Exception ex)
            {
                string debug = "";

                debug += "Source: " + ex.Source + Environment.NewLine;
                debug += "Message: " + ex.Message + Environment.NewLine;
                debug += "HelpLink: " + ex.HelpLink + Environment.NewLine;
                debug += "ToString: " + ex.ToString() + Environment.NewLine;

                DebugInfo.ShowInfoDialog(debug);
            }
        }
    }

En sitten tiedä miten oikein tai väärin tämä on, mutta toimii ainakin itsellä tarpeeksi hyvin omissa pikkuprojekteissani. DebugInfo on formi jossa on normaali textbox. Tätä voi sitten varmaan jalostaa vaikka niin, että se lähettäisi sähköpostilla nuo tiedot.

Vastaus

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

Tietoa sivustosta