Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi-fungsi ini menyediakan fasilitas penelusuran kesalahan dan pelacakan yang berguna.
| Nama | Deskripsi |
|---|---|
| AtlHresultFromLastError | Mengembalikan GetLastError kode kesalahan dalam bentuk HRESULT. |
| AtlHresultFromWin32 | Mengonversi kode kesalahan Win32 menjadi HRESULT. |
| AtlReportError | IErrorInfo Menyiapkan untuk memberikan detail kesalahan kepada klien. |
| AtlThrow | Melempar .CAtlException |
| AtlThrowLastWin32 | Panggil fungsi ini untuk memberi sinyal kesalahan berdasarkan hasil fungsi GetLastErrorWindows . |
AtlHresultFromLastError
Mengembalikan nilai kode kesalahan terakhir alur panggilan dalam bentuk HRESULT.
HRESULT AtlHresultFromLastError();
Keterangan
AtlHresultFromLastErrorGetLastError memanggil untuk mendapatkan kesalahan terakhir dan mengembalikan kesalahan setelah mengonversinya ke HRESULT menggunakan makro HRESULT_FROM_WIN32.
Persyaratan
Header: atlcomcli.h
AtlHresultFromWin32
Mengonversi kode kesalahan Win32 menjadi HRESULT.
AtlHresultFromWin32(DWORD error);
Parameter
kesalahan
Nilai kesalahan yang akan dikonversi.
Keterangan
Mengonversi kode kesalahan Win32 menjadi HRESULT, menggunakan makro HRESULT_FROM_WIN32.
Catatan
Alih-alih menggunakan HRESULT_FROM_WIN32(GetLastError()), gunakan fungsi AtlHresultFromLastError.
Persyaratan
Header: atlcomcli.h
AtlReportError
IErrorInfo Menyiapkan antarmuka untuk memberikan informasi kesalahan kepada klien objek.
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCOLESTR lpszDesc,
const IID& iid = GUID_NULL,
HRESULT hRes = 0);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCOLESTR lpszDesc,
DWORD dwHelpID,
LPCOLESTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCSTR lpszDesc,
const IID& iid = GUID_NULL,
HRESULT hRes = 0);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
LPCSTR lpszDesc,
DWORD dwHelpID,
LPCSTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0);
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
UINT nID,
const IID& iid = GUID_NULL,
HRESULT hRes = 0,
HINSTANCE hInst = _AtlBaseModule.GetResourceInstance());
HRESULT WINAPI AtlReportError(
const CLSID& clsid,
UINT nID,
DWORD dwHelpID,
LPCOLESTR lpszHelpFile,
const IID& iid = GUID_NULL,
HRESULT hRes = 0,
HINSTANCE hInst = _AtlBaseModule.GetResourceInstance());
Parameter
clsid
[di] CLSID objek yang melaporkan kesalahan.
lpszDesc
[di] String yang menjelaskan kesalahan. Versi Unicode menentukan bahwa lpszDesc berjenis LPCOLESTR; versi ANSI menentukan jenis LPCSTR.
iid
[di] IID antarmuka yang menentukan kesalahan atau GUID_NULL jika kesalahan ditentukan oleh sistem operasi.
hRes
[di] HRESULT yang ingin Anda kembalikan ke pemanggil.
Nid
[di] Pengidentifikasi sumber daya tempat string deskripsi kesalahan disimpan. Nilai ini harus terletak antara 0x0200 dan 0xFFFF, secara inklusif. Dalam build debug, ASSERT akan menghasilkan jika nID tidak mengindeks string yang valid. Dalam build rilis, string deskripsi kesalahan akan diatur ke "Kesalahan Tidak Diketahui."
dwHelpID
[di] Pengidentifikasi konteks bantuan untuk kesalahan.
lpszHelpFile
[di] Jalur dan nama file bantuan yang menjelaskan kesalahan.
hInst
[di] Handel ke sumber daya. Secara default, parameter ini adalah __AtlBaseModuleModule::GetResourceInstance, di mana __AtlBaseModuleModule adalah instans global CAtlBaseModule atau kelas yang berasal darinya.
Tampilkan Nilai
Jika parameter hRes bukan nol, mengembalikan nilai hRes. Jika hRes adalah nol, maka empat versi AtlReportError pertama pengembalian DISP_E_EXCEPTION. Dua versi terakhir mengembalikan hasil MAKE_HRESULT makro( 1, FACILITY_ITF, nID ).
Keterangan
String lpszDesc digunakan sebagai deskripsi teks kesalahan. Ketika klien menerima hRes yang Anda kembalikan dari AtlReportError, klien dapat mengakses IErrorInfo struktur untuk detail tentang kesalahan.
Contoh
STDMETHODIMP CMyControl::MyErrorProneMethod()
{
BOOL bSucceeded = ErrorProneFunc();
if (bSucceeded)
return S_OK;
else
// hRes is set to DISP_E_EXCEPTION
return AtlReportError(GetObjectCLSID(), L"My error message");
}
Perhatian
Jangan gunakan AtlReportError di C++ catch handler. Beberapa penggantian fungsi ini menggunakan makro konversi string ATL secara internal, yang pada gilirannya _alloca menggunakan fungsi secara internal. Menggunakan AtlReportError dalam handler tangkapan C++ dapat menyebabkan pengecualian di handler tangkapan C++.
Persyaratan
Header: atlcom.h
AtlThrow
Panggil fungsi ini untuk memberi sinyal kesalahan berdasarkan kode status HRESULT.
__declspec(noreturn) inline void AtlThrow(HRESULT hr);
Parameter
Hr
Nilai HRESULT standar.
Keterangan
Fungsi ini digunakan oleh kode ATL dan MFC jika terjadi kondisi kesalahan. Ini juga dapat dipanggil dari kode Anda sendiri. Implementasi default fungsi ini tergantung pada definisi simbol _ATL_NO_EXCEPTIONS dan pada jenis proyek, MFC atau ATL.
Dalam semua kasus, fungsi ini melacak HRESULT ke debugger.
Di Visual Studio 2015 Update 3 dan yang lebih baru, fungsi ini dikaitkan __declspec(noreturn) untuk menghindari peringatan SAL yang memacu.
Jika _ATL_NO_EXCEPTIONS tidak didefinisikan dalam proyek MFC, fungsi ini melempar CMemoryException atau COleException berdasarkan nilai HRESULT.
Jika _ATL_NO_EXCEPTIONS tidak didefinisikan dalam proyek ATL, fungsi akan melempar CAtlException.
Jika _ATL_NO_EXCEPTIONS didefinisikan, fungsi menyebabkan kegagalan pernyataan alih-alih melemparkan pengecualian.
Untuk proyek ATL, dimungkinkan untuk menyediakan implementasi Anda sendiri dari fungsi ini untuk digunakan oleh ATL jika terjadi kegagalan. Untuk melakukan ini, tentukan fungsi Anda sendiri dengan tanda tangan yang sama dengan AtlThrow dan #define AtlThrow menjadi nama fungsi Anda. Ini harus dilakukan sebelum menyertakan atlexcept.h (yang berarti bahwa itu harus dilakukan sebelum menyertakan header ATL karena atlbase.h termasuk atlexcept.h). Atribut fungsi __declspec(noreturn) Anda untuk menghindari peringatan SAL yang memacu.
Contoh
// Constructors and operators cannot return error codes, and
// so they are the place where exceptions are generally used.
class CMyClass
{
private:
CComPtr<IBuddy> m_spBuddy;
public:
CMyClass()
{
HRESULT hr = m_spBuddy.CoCreateInstance(CLSID_Buddy);
if (FAILED(hr))
AtlThrow(hr);
}
// methods ..
};
Persyaratan
Header: atldef.h
AtlThrowLastWin32
Panggil fungsi ini untuk memberi sinyal kesalahan berdasarkan hasil fungsi GetLastErrorWindows .
inline void AtlThrowLastWin32();
Keterangan
Fungsi ini melacak hasil GetLastError debugger.
Jika _ATL_NO_EXCEPTIONS tidak didefinisikan dalam proyek MFC, fungsi ini melempar CMemoryException atau COleException berdasarkan nilai yang dikembalikan oleh GetLastError.
Jika _ATL_NO_EXCEPTIONS tidak didefinisikan dalam proyek ATL, fungsi akan melempar CAtlException.
Jika _ATL_NO_EXCEPTIONS didefinisikan, fungsi menyebabkan kegagalan pernyataan alih-alih melemparkan pengecualian.
Persyaratan
Header: atldef.h