Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu işlevler yararlı hata ayıklama ve izleme olanakları sağlar.
| Veri Akışı Adı | Açıklama |
|---|---|
| AtlHresultFromLastError | GetLastError HRESULT biçiminde bir hata kodu döndürür. |
| AtlHresultFromWin32 | Win32 hata kodunu HRESULT biçimine dönüştürür. |
| AtlReportError | İstemciye hata ayrıntılarını sağlamak için ayarlar IErrorInfo . |
| AtlThrow | Bir CAtlExceptionatar. |
| AtlThrowLastWin32 | Windows işlevinin sonucuna göre hata sinyali vermek için bu işlevi GetLastErrorçağırın. |
AtlHresultFromLastError
Çağıran iş parçacığının son hata kodu değerini HRESULT biçiminde döndürür.
HRESULT AtlHresultFromLastError();
Açıklamalar
AtlHresultFromLastError çağrısı GetLastError yaparak son hatayı alır ve HRESULT_FROM_WIN32 makroyu kullanarak bir HRESULT'a dönüştürdükten sonra hatayı döndürür.
Gereksinimler
Üst bilgi: atlcomcli.h
AtlHresultFromWin32
Win32 hata kodunu HRESULT biçimine dönüştürür.
AtlHresultFromWin32(DWORD error);
Parametreler
hata
Dönüştürülecek hata değeri.
Açıklamalar
Makro HRESULT_FROM_WIN32 kullanarak Win32 hata kodunu HRESULT'a dönüştürür.
Not
kullanmak HRESULT_FROM_WIN32(GetLastError())yerine AtlHresultFromLastError işlevini kullanın.
Gereksinimler
Üst bilgi: atlcomcli.h
AtlReportError
Nesnesinin IErrorInfo istemcilerine hata bilgileri sağlamak için arabirimini ayarlar.
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());
Parametreler
clsid
[in] Hatayı bildiren nesnenin CLSID değeri.
lpszDesc
[in] Hatayı açıklayan dize. Unicode sürümleri lpszDesc'in LPCOLESTR türünde olduğunu belirtir; ANSI sürümü bir LPCSTR türü belirtir.
iid
[in] Hatayı tanımlayan arabirimin IID değeri veya hatanın işletim sistemi tarafından tanımlandığında GUID_NULL.
hRes
[in] Arayana geri döndürmek istediğiniz HRESULT.
Nıd
[in] Hata açıklaması dizesinin depolandığı kaynak tanımlayıcısı. Bu değer, dahil olmak üzere 0x0200 ile 0xFFFF arasında yer almalıdır. Hata ayıklama derlemelerinde, nID geçerli bir dizenin dizinini oluşturmazsa BIR ASSERT sonucu verir. Sürüm derlemelerinde hata açıklaması dizesi "Bilinmeyen Hata" olarak ayarlanır.
dwHelpID
[in] Hatanın yardım bağlamı tanımlayıcısı.
lpszHelpFile
[in] Hatayı açıklayan yardım dosyasının yolu ve adı.
hInst
[in] Kaynağın tanıtıcısı. Varsayılan olarak, bu parametre CAtlBaseModule'un __AtlBaseModuleModule::GetResourceInstance genel örneği veya ondan türetilen bir sınıf olan __AtlBaseModuleModule parametresidir.
Dönüş Değeri
hRes parametresi sıfır değilse, hRes değerini döndürür. hRes sıfırsa, dönüşünün ilk dört sürümü AtlReportError DISP_E_EXCEPTION. Son iki sürüm, makro MAKE_HRESULT( 1, FACILITY_ITF, nID ) sonucunu döndürür.
Açıklamalar
LpszDesc dizesi, hatanın metin açıklaması olarak kullanılır. İstemci, 'den AtlReportErrordöndürdeğiniz hRes'i aldığında, hatayla ilgili ayrıntılar için yapıya erişebilirIErrorInfo.
Örnek
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");
}
Dikkat
C++ catch işleyicilerinde kullanmayın AtlReportError . Bu işlevlerin bazı geçersiz kılmaları, ATL dize dönüştürme makrolarını dahili olarak kullanır ve bu da işlevi dahili olarak kullanır _alloca . C++ catch işleyicisinde kullanmak AtlReportError , C++ catch işleyicilerinde özel durumlara neden olabilir.
Gereksinimler
Üst bilgi: atlcom.h
AtlThrow
HRESULT durum kodunu temel alan bir hata sinyali vermek için bu işlevi çağır.
__declspec(noreturn) inline void AtlThrow(HRESULT hr);
Parametreler
Hr
Standart HRESULT değeri.
Açıklamalar
Bu işlev, hata koşulu durumunda ATL ve MFC kodu tarafından kullanılır. Kendi kodunuzdan da çağrılabilir. Bu işlevin varsayılan uygulaması, sembol _ATL_NO_EXCEPTIONS tanımına ve proje, MFC veya ATL türüne bağlıdır.
Her durumda, bu işlev HRESULT hata ayıklayıcısını izler.
Visual Studio 2015 Güncelleştirme 3 ve sonraki sürümlerinde, bu işleve sahte SAL uyarılarından kaçınmak için __declspec (noreturn) atfedilir.
_ATL_NO_EXCEPTIONS bir MFC projesinde tanımlanmamışsa, bu işlev HRESULT değerini temel alan bir CMemoryException veya COleException oluşturur.
_ATL_NO_EXCEPTIONS bir ATL projesinde tanımlanmamışsa, işlev bir CAtlException oluşturur.
_ATL_NO_EXCEPTIONS tanımlanırsa, işlev özel durum oluşturma yerine onay hatasına neden olur.
ATL projeleri için, bir hata durumunda ATL tarafından kullanılacak bu işlevi kendi uygulamanızı sağlamak mümkündür. Bunu yapmak için kendi işlevinizi ile aynı imzayla AtlThrow tanımlayın ve işlevinizin adı olarak #define AtlThrow . Bu, atlexcept.h dahil edilmeden önce yapılmalıdır (bu, atlbase.h atlexcept.h içerdiğinden, atL üst bilgileri dahil edilmeden önce yapılması gerektiği anlamına gelir). Sahte SAL uyarılarından kaçınmak için işlevinizi __declspec(noreturn) ilişkilendirin.
Örnek
// 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 ..
};
Gereksinimler
Üst bilgi: atldef.h
AtlThrowLastWin32
Windows işlevinin sonucuna göre hata sinyali vermek için bu işlevi GetLastErrorçağırın.
inline void AtlThrowLastWin32();
Açıklamalar
Bu işlev, hata ayıklayıcının sonucunu GetLastError izler.
_ATL_NO_EXCEPTIONS bir MFC projesinde tanımlanmamışsa, bu işlev tarafından GetLastErrordöndürülen değere göre bir CMemoryException veya COleException oluşturur.
_ATL_NO_EXCEPTIONS bir ATL projesinde tanımlanmamışsa, işlev bir CAtlException oluşturur.
_ATL_NO_EXCEPTIONS tanımlanırsa, işlev özel durum oluşturma yerine onay hatasına neden olur.
Gereksinimler
Üst bilgi: atldef.h