ΕΠΙΔΙΌΡΘΩΣΗ: Έχουν αλιευθεί SEH εξαιρέσεις από το δείκτη χειρισμού εξαιρέσεων λανθασμένη, όταν είναι ενεργοποιημένη η χειρισμού εξαιρέσεων ασύγχρονη στο WEC 2013

Αυτό το άρθρο περιγράφει ένα ζήτημα στο οποίο SEH εξαιρέσεις έχουν αλιευθεί από ένα εσφαλμένο δείκτη χειρισμού στο Windows ενσωματωμένο συμπαγή 2013. Διατίθεται μια ενημερωμένη έκδοση για να επιλύσετε αυτό το ζήτημα. Πριν να εγκαταστήσετε αυτήν την ενημερωμένη έκδοση, πρέπει να εγκαταστήσετε όλες τις ενημερωμένες εκδόσεις που έχουν εκδοθεί προηγουμένως για αυτό το προϊόν.

Συμπτώματα

Εξετάστε το ακόλουθο σενάριο:
  • Μπορείτε να χρησιμοποιήσετε τη Δόμηση εφαρμογών προσθήκης για το Visual Studio 2013 για να δημιουργήσετε μια εφαρμογή C++ που να στοχεύει στο Windows ενσωματωμένο συμπαγή 2013.
  • Μπορείτε να ενεργοποιήσετε την εξαίρεση ασύγχρονης χειρισμό, χρησιμοποιώντας το διακόπτη μεταγλωττιστή "/EHa". Αυτός ο διακόπτης επιτρέπει δύο C++ σύγχρονες και δομημένη χειρισμού εξαιρέσεων ασύγχρονη εξαίρεση (SEH) μέθοδοι προορίζονται να αναμειχθούν με τον ίδιο κωδικό χειρισμού.
  • Μπορείτε να εκτελέσετε τον σχετικό κωδικό για να τραβήξετε SEH εξαιρέσεις.
Σε αυτό το σενάριο, SEH εξαιρέσεις έχουν αλιευθεί πάντα στο πρόγραμμα χειρισμού εξαίρεσης πρώτη ακόμη και αν είναι φιλτραρισμένο για μια σύγχρονη εξαίρεση C++.

Η αναμενόμενη συμπεριφορά είναι SEH εξαιρέσεις που εντοπίζονται από το πρόγραμμα χειρισμού εξαιρέσεων αποσιωπητικά.

Για παράδειγμα, μπορείτε να εκτελέσετε το ακόλουθο δείγμα κώδικα:
class CMyEx{
public:
CMyEx(int nParam) : m_nParam(nParam) { }
int m_nParam;
};

void TestExceptions()
{
try
{
int a = 42;
int b = 0;
// throw CMyEx(1);
// throw 97;
int c = a / b;
}
catch (const CMyEx &e)
{
wprintf(L"CMyEx exception caught (param=%d)!\n", e.m_nParam);
}
catch (...)
{
wprintf(L"Exception of unspecified type caught by ellipsis clause!\n");
}
}
Σε αυτό το δείγμα, πάντα χτυπήσετε το πρώτο όρο catch όταν παρουσιαστεί εξαίρεση SEH (ακέραια διαίρεση με το μηδέν) αντί για το πρόγραμμα χειρισμού έλλειψη, όπως αναμένεται.

Προτεινόμενη αντιμετώπιση

Πληροφορίες ενημερωμένης έκδοσης λογισμικού

Ενσωματωμένο συμπαγή 2013 μηνιαία ενημερωμένη έκδοση των Windows (Σεπτεμβρίου 2015) είναι τώρα διαθέσιμη από τη Microsoft. Για να κάνετε λήψη αυτό Μηνιαίας ενημερωμένης έκδοσης των Windows ενσωματωμένο συμπαγή 2013, μεταβείτε στην Microsoft OEM Online ή MyOEM.

Προϋποθέσεις

Αυτή η ενημερωμένη έκδοση υποστηρίζεται μόνο αν έχουν εγκατασταθεί επίσης όλες τις ενημερωμένες εκδόσεις που έχουν εκδοθεί προηγουμένως για αυτό το προϊόν.

Απαίτηση επανεκκίνησης

Μετά την εφαρμογή αυτής της ενημερωμένης έκδοσης, πρέπει να εκτελέσετε εκ νέου δημιουργία ολόκληρης της πλατφόρμας. Για να γίνει αυτό, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους:
  • Από το μενού Δημιουργία , επιλέξτε Καθαρή λύσηκαι, στη συνέχεια, επιλέξτε Δημιουργία λύσης.
  • Από το μενού Δημιουργία , επιλέξτε Αναδόμηση λύση.
Δεν χρειάζεται να κάνετε επανεκκίνηση του υπολογιστή μετά την εφαρμογή αυτής της ενημερωμένης έκδοσης λογισμικού.

Πληροφορίες αντικατάστασης ενημέρωσης

Αυτή η ενημερωμένη έκδοση δεν αντικαθιστά άλλες ενημερωμένες εκδόσεις.
Πληροφορίες αρχείων

Αναφορές

Πληροφορίες σχετικά με την ορολογία που χρησιμοποιεί η Microsoft για την περιγραφή ενημερωμένων εκδόσεων λογισμικού.
Ιδιότητες

Αναγνωριστικό άρθρου: 3008664 - Τελευταία αναθεώρηση: 21 Ιαν 2017 - Αναθεώρηση: 3

Σχόλια