Fungsi SetErrorMode (errhandlingapi.h)

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

Sintaks

UINT SetErrorMode(
  [in] UINT uMode
);

Parameter

[in] uMode

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

Nilai Makna
0
Gunakan default sistem, yaitu menampilkan semua kotak dialog kesalahan.
SEM_FAILCRITICALERRORS
0x0001
Sistem tidak menampilkan kotak pesan critical-error-handler. Sebaliknya, sistem mengirimkan kesalahan ke proses panggilan.

Praktik terbaik 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 perataan 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 lebih lanjut, lihat bagian Keterangan.

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

SEM_NOGPFAULTERRORBOX
0x0002
Sistem tidak menampilkan dialog Pelaporan Galat Windows.
SEM_NOOPENFILEERRORBOX
0x8000
Fungsi OpenFile tidak menampilkan kotak pesan ketika gagal menemukan file. Sebaliknya, kesalahan dikembalikan ke pemanggil. Mode kesalahan ini mengambil alih bendera OF_PROMPT .

Nilai kembali

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

Keterangan

Setiap proses memiliki mode kesalahan terkait yang menunjukkan kepada sistem bagaimana aplikasi akan merespons kesalahan serius. Proses anak mewarisi mode kesalahan dari 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 penyelarasan 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 daripada SetErrorMode karena kurang mengganggu perilaku normal sistem.

Persyaratan

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

Lihat juga

Fungsi Penanganan Kesalahan

Mode Kesalahan

GetErrorMode

SetThreadErrorMode