Domanda

Ho aperto un progetto (creato in D2007 / 08) in D2009 e si sarebbe compilato ma avrebbe lanciato tonnellate di eccezioni quando eseguito. Cosa strana, ma so che il progetto è un casino, quindi voglio andare avanti e risolverlo. Beh, non aggiustarlo davvero, basta farlo funzionare sarebbe sufficiente.

Quando l'ho eseguito, ho ricevuto una notifica di eccezione del debugger (il piccolo messaggio di dialogo con i pulsanti Interrompi, Continua, Aiuto) e volevo procedere e vedere se forse avrebbe funzionato quando saltava l'eccezione. Ho controllato il piccolo " Ignora questo tipo di eccezione " selezionare la casella nell'angolo in basso a sinistra e fare clic su Continua. Ora non ricevo più la notifica di eccezione, ma l'applicazione non viene ancora eseguita. Ho solo un paio di vaghe caselle di errore e ho ben poca idea di cosa stia succedendo.

Vorrei riattivare il tipo di eccezione precedentemente selezionato per essere ignorato. Ma non riesco a trovare l'opzione da nessuna parte. Dove dovrei cercarlo? Qualcuno può aiutare?

È stato utile?

Soluzione

Quanto segue è estratto da questa pagina su Delphi Q & amp; A di Rob Kennedy : (licenza CC) sebbene si riferisca a Delphi 2005, può essere d'aiuto.

Perché continuo a ricevere messaggi di errore anche dopo aver scritto un gestore eccezioni?

Nelle sue impostazioni predefinite, l'IDE Delphi ti avvisa ogni volta che si verifica un'eccezione nel tuo programma, come nella Figura 1. Ciò che è importante rendersi conto è che a quel punto, nessuna delle eccezioni del tuo programma- il codice di gestione è ancora in esecuzione. È tutta la stessa Delphi; il suo stato speciale di debugger gli consente di ricevere la prima notifica di qualsiasi eccezione nel programma, anche prima che il programma lo sappia.

 inserisci qui la descrizione dell'immagine

Evitare le notifiche

Se non vuoi essere avvisato quando si verifica un'eccezione, hai alcune opzioni.

  • Puoi utilizzare Delphi & # 8217; s & # 8220; breakpoint avanzati & # 8221; per disabilitare la gestione delle eccezioni in una regione di codice. Per iniziare, imposta un punto di interruzione sulla riga di codice in cui desideri che l'IDE ignori le eccezioni. Fare clic con il tasto destro del mouse sul punto di interruzione nella grondaia e aprire la finestra di dialogo delle proprietà del punto di interruzione. Nella sezione avanzata sono presenti alcune caselle di controllo. (Vedi Figura 2.) Cancella & # 8220; Break & # 8221; per impedire al debugger di interrompere il programma su quella riga e impostare & # 8220; Ignora le eccezioni successive & # 8221; di dialogo.

    Successivamente, imposta un altro punto di interruzione in cui desideri che il debugger riprenda a gestire le eccezioni. Modifica le sue proprietà per gestire le eccezioni successive.

 inserisci qui la descrizione dell'immagine

  • Puoi dire al debugger di ignorare alcuni tipi di eccezioni. La Figura 3 mostra le opzioni di eccezione del linguaggio di Delphi. Aggiungi una classe di eccezioni all'elenco e tutte le eccezioni di quel tipo e di tutti i tipi discendenti passeranno al tuo programma senza che Delphi interferisca.

 inserisci qui la descrizione dell'immagine

  • In un'opzione correlata alla precedente, puoi dire al debugger di non interrompere alcuna eccezione. Per farlo, cancella & # 8220; Notifica sulle eccezioni della lingua & # 8221; casella di controllo.

  • Infine, puoi disattivare del tutto il debug integrato. Delphi non ti avviserà delle eccezioni e inoltre non si fermerà ai punti di interruzione né consentirà l'uso di & # 8220; Pausa & # 8221; pulsante. Disattiva il debug integrato nelle opzioni di debugger, come mostrato nella Figura 5 per Delphi 2005.

 inserisci qui la descrizione dell'immagine

Altri suggerimenti

Ho trovato i tipi di eccezione ignorati in

(Menu principale) Strumenti > > Opzioni > > Opzioni di debugger > > Debugger CodeGear > > Eccezioni lingua > > e l'elenco di tipi di eccezione ignorato.

È un po 'più nascosto che in D2005 ma molto vicino a quanto è stato detto nell'articolo a cui fa riferimento Stuart Dunkeld.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top