2010-09-17 10 views
2

Pourquoi ne vois-je pas le MessageBox avec des détails d'exception lorsque j'exécute mon programme en exécutant exe fine dans le dossier bin debug?Ne pas voir MessageBox

Je vois l'exception lorsque je débogue (exécute) le programme à partir de Visual Studio.

[STAThread] 
static void Main() 
{ 
    try 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
    catch (Exception ex) 
    { 
     if (MessageBox.Show(
      string.Format("There were unhandeled exceptions. Would you like to continue using this program?"), 
      "Fatal Error", 
      MessageBoxButtons.YesNo, 
      MessageBoxIcon.Error) == System.Windows.Forms.DialogResult.No) 
       Application.Exit(); 
    } 
} 

Modifier
Voici le code qui génère l'exception:

private void button1_Click(object sender, EventArgs e) { 
    int num = 1; 
    num = num/(num - num); 
} 
+0

Étrange, quand je le test, je vois la boîte à messages .... –

+5

"Il y avait des exceptions non-activées Oui/Non?" WTF quotidien imminent si jamais j'en ai vu un ... – Rushyo

+0

Le programme sortira dans votre exemple même si vous répondez non. Qu'est-ce que vous essayez d'accomplir? Si vous souhaitez gérer des exceptions non gérées et ne pas nécessairement quitter le programme, il existe d'autres façons de le faire. De plus, les exceptions sont-elles lancées à partir d'un thread (BackgroundWorker, BeginInvoke, Thread, Task, etc.)? –

Répondre

3

Ajouter cette ligne:

try 
{ 
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException); 
    ... 

Apparemment, la valeur par défaut est différent lors du débogage. Je ne connais pas les détails à ce sujet.

Notez également que votre if(...) Application.Exit(); n'est pas vraiment utile ici, et il ne devrait pas.
N'essayez pas de redémarrer ou quoi que ce soit.

+0

+1, c'est correct. La boucle de message se comporte différemment lorsque le débogueur est attaché. Facilite le débogage des exceptions. –