Khắc phục: SEH ngoại lệ bị xử lý ngoại lệ không đúng khi xử lý ngoại lệ không đồng bộ được bật trong WEC 2013

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 3008664
Bài viết này mô tả sự cố trong đó SEH ngoại lệ bị xử lý không đúng trong Windows Embedded Compact 2013. Bản Cập Nhật có sẵn để khắc phục sự cố này. Trước khi bạn cài đặt chuyên biệt bản cập nhật này, tất cả các bản Cập Nhật đã phát hành dành cho sản phẩm này phải được cài đặt chuyên biệt.
Triệu chứng
Xem xét tình huống sau:
  • Bạn sử dụng trình tạo ứng dụng bổ sung cho Visual Studio 2013 để tạo ra một ứng dụng C++ nhắm mục tiêu Windows Embedded Compact 2013.
  • Bạn kích hoạt ngoại lệ không đồng bộ xử lý bằng cách sử dụng các "/ EHa"biên dịch chuyển. Chuyển đổi này cho phép cả C++ đồng bộ và cấu trúc ngoại lệ xử lý ngoại lệ không đồng bộ (SEH) xử lý các phương pháp được kết hợp trong cùng một mã.
  • Bạn chạy mã liên quan đến bắt SEH ngoại lệ.
Trong trường hợp này, SEH ngoại lệ luôn bị trong bộ xử lý văn bản ngoại lệ đầu tiên ngay cả khi một ngoại lệ C++ đồng bộ lọc.

Hành động mong muốn là ngoại lệ SEH đang bị chặn bởi các dấu kiểm chấm lửng xử lý ngoại lệ.

Ví dụ, bạn chạy mã mẫu sau:
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");    }}
Trong mẫu này, bạn luôn nhấn khoản Bắt đầu tiên khi xảy ra ngoại lệ SEH (nguyên chia bằng 0) thay vì xử lý dấu kiểm chấm lửng như mong đợi.

Giải pháp

Thông tin cập nhật phần mềm

Windows nhúng Compact 2013 Cập nhật hàng tháng (tháng 9 năm 2015) có sẵn từ Microsoft. Để tải xuống bản cập nhật hàng tháng này Windows Embedded Compact 2013, hãy đi tới Microsoft OEM trực tuyến hoặc MyOEM.

Điều kiện tiên quyết

Bản cập nhật này được hỗ trợ chỉ khi tất cả các bản Cập Nhật đã phát hành dành cho sản phẩm này cũng đã được cài đặt chuyên biệt.

Yêu cầu khởi động lại

Sau khi bạn áp dụng bản cập nhật này, bạn phải thực hiện một xây dựng sạch của toàn bộ nền tảng. Để thực hiện việc này, sử dụng một trong những phương pháp sau:
  • Xây dựngmenu chọn Sạch giải phápvà sau đó chọn Tạo giải pháp.
  • Xây dựngmenu, chọn Giải pháp xây dựng lại.
Bạn không phải khởi động lại máy tính sau khi áp dụng bản cập nhật phần mềm này.

Thông tin thay thế bản cập nhật

Bản cập nhật này không thay thế bất kỳ bản Cập Nhật khác.

Thông tin về tệp

Phiên bản tiếng Anh của gói cập nhật phần mềm này có các thuộc tính tệp (hoặc thuộc tính tệp mới hơn) được liệt kê trong bảng sau. Ngày và giờ của các tệp này được liệt kê theo giờ chuẩn quốc tế (UTC). Khi bạn xem thông tin về tệp, nó được chuyển đổi thành giờ địa phương. Để tìm sự khác nhau giữa UTC và giờ địa phương, sử dụng tabmúi thời gian trong mục ngày và giờ trong Pa-nen điều khiển.
Tệp được bao gồm trong gói cập nhật này
Tên tệpKích thước tệpNgàyGiờĐường dẫn
Frame.cpp34,13313 tháng 11 năm 201423:06Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh
Fullcrt.lib30,027,37809 tháng năm 201509:17Public\Common\Oak\Lib\X86\Checked
Fullcrt.lib30,228,29209 tháng năm 201509:17Public\Common\Oak\Lib\X86\Retail
Fullcrt.lib28,759,83609 tháng năm 201509:16Public\Common\Oak\Lib\X86\Debug
Fullcrt.lib29,278,30009 tháng năm 201509:17Public\Common\Oak\Lib\Armv7\Checked
Fullcrt.lib29,566,73009 tháng năm 201509:17Public\Common\Oak\Lib\Armv7\Retail
Fullcrt.lib33,139,56009 tháng năm 201509:16Public\Common\Oak\Lib\Armv7\Debug
Msvcr110d.dll1,339,95208 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.dll754,22408 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.Map1,287,57908 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.rel528,83408 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.Map788,98608 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.rel242,16908 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.dll1,145,31208 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.dll539,60808 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.Map2,714,27508 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.rel215,92408 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.Map1,258,31708 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.rel122,16708 tháng năm 201505:26Public\Common\Sdk\Crt\Bin\Arm
Tham khảo
Tìm hiểu về các thuật ngữ mà Microsoft sử dụng để mô tả bản cập nhật phần mềm.

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 3008664 - Xem lại Lần cuối: 10/29/2015 19:21:00 - Bản sửa đổi: 1.0

Windows Embedded Compact 2013

  • kbautohotfix kbqfe kbhotfixserver kbfix kbmt KB3008664 KbMtvi
Phản hồi