Bagikan melalui


Fungsi SetErrorMode (errhandlingapi.h)

Mengontrol apakah sistem atau proses menangani jenis kesalahan serius yang ditentukan.

Sintaksis

UINT SetErrorMode(
  [in] UINT uMode
);

Parameter

[in] uMode

Mode kesalahan proses. Parameter ini bisa berupa satu atau beberapa nilai berikut.

Nilai Arti
0
Gunakan default sistem, yang menampilkan semua kotak dialog kesalahan.
SEM_FAILCRITICALERRORS
0x0001
Sistem tidak menampilkan kotak pesan critical-error-handler. Sebagai gantinya, sistem mengirimkan kesalahan ke proses panggilan.

Praktik terbaiknya adalah semua aplikasi memanggil fungsi SetErrorMode di seluruh proses dengan parameter SEM_FAILCRITICALERRORS saat startup. Ini untuk mencegah dialog mode kesalahan menggantung aplikasi.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
Sistem secara otomatis memperbaiki kesalahan penyelarasan memori dan membuatnya tidak terlihat oleh aplikasi. Ini dilakukan untuk proses panggilan dan proses turunan apa pun. Fitur ini hanya didukung oleh arsitektur prosesor tertentu. Untuk informasi selengkapnya, lihat bagian Keterangan.

Setelah nilai ini diatur untuk proses, upaya berikutnya untuk menghapus nilai diabaikan.

SEM_NOGPFAULTERRORBOX
0x0002
Sistem tidak memanggil Pelaporan Kesalahan Windows. Untuk menonaktifkan UI Pelaporan Kesalahan Windows, panggil WerSetFlags dengan bendera WER_FAULT_REPORTING_NO_UI.
SEM_NOOPENFILEERRORBOX
0x8000
Fungsi OpenFile tidak menampilkan kotak pesan saat gagal menemukan file. Sebagai gantinya, kesalahan dikembalikan ke pemanggil. Mode kesalahan ini mengambil alih bendera OF_PROMPT.

Mengembalikan nilai

Nilai yang dikembalikan adalah status sebelumnya dari bendera bit mode kesalahan.

Komentar

Setiap proses memiliki mode kesalahan terkait yang menunjukkan kepada sistem bagaimana aplikasi akan merespons kesalahan serius. Proses turunan mewarisi mode kesalahan proses induknya. Untuk mengambil mode kesalahan proses, gunakan fungsi GetErrorMode.

Karena mode kesalahan diatur untuk seluruh proses, Anda harus memastikan bahwa aplikasi multi-utas tidak mengatur bendera mode kesalahan yang berbeda. Melakukannya dapat menyebabkan penanganan kesalahan yang tidak konsisten.

Sistem tidak membuat kesalahan penyelarasan terlihat oleh aplikasi pada semua arsitektur prosesor. Oleh karena itu, menentukan SEM_NOALIGNMENTFAULTEXCEPT bukanlah kesalahan pada arsitektur tersebut, tetapi sistem bebas untuk mengabaikan permintaan secara diam-diam. Ini berarti bahwa urutan kode seperti berikut ini tidak selalu valid di komputer x86:

C++
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); 
fuOldErrorMode = SetErrorMode(0); 
ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
Itanium: Aplikasi harus secara eksplisit memanggil SetErrorMode dengan SEM_NOALIGNMENTFAULTEXCEPT agar sistem secara otomatis memperbaiki kesalahan penyelarasan. Pengaturan default adalah agar sistem membuat kesalahan perataan terlihat oleh aplikasi.

Visual Studio 2005: Saat mendeklarasikan penunjuk ke struktur yang mungkin tidak meratakan data, Anda dapat menggunakan kata kunci __unaligned untuk menunjukkan bahwa jenis harus dibaca satu byte pada satu waktu. Untuk informasi selengkapnya, lihat Perataan Data Windows .

Windows 7: Penelepon harus mendukung SetThreadErrorMode SetErrorMode karena kurang mengganggu perilaku normal sistem.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Platform Target Windows
Header errhandlingapi.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

Fungsi Penanganan Kesalahan

Mode Kesalahan

GetErrorMode

SetThreadErrorMode