Udostępnij przez


Interpretowanie kodów błędów

Po ustaleniu, która aplikacja jest źródłem problemu, należy dowiedzieć się, jaki błąd wystąpił. Błędy są podnoszone i zgłaszane w różnych formatach, w zależności od języka używanego przez aplikację.

W programie Microsoft Visual C++zwracane są wartości powodzenia, ostrzeżenia i niepowodzenia przy użyciu 32-bitowej liczby znanej jako HRESULT. Aby uzyskać listę wartości HRESULT zdefiniowanych przez system, zobacz plik nagłówkowy Winerror.h dołączony do zestawu Windows SDK. Ten plik zawiera wszystkie kody błędów COM+ i opisy. Aby uzyskać więcej informacji na temat wartości HRESULT, zobacz Error Handling.

W języku Java wystąpienie com.ms.com.ComFailException jest zgłaszane w celu wskazania błędu, gdzie obiekt ComFailException określa HRESULT. Wystąpienie com.ms.com.ComSuccessException wskazuje powodzenie z zwracaną wartością False. Aby uzyskać informacje na temat interpretowania tych wyjątków, zobacz dokumentację programu Microsoft Visual J++.

Notatka

Procesy serwera aplikacji COM+ hostujące obiekty Visual J++ nie będą bezczynne (nawet w przypadku zerowych aktywnych obiektów), chyba że wyłączysz debugowanie JIT w środowisku IDE VJ6. Aby uzyskać informacje na temat tego, jak to zrobić, zobacz dokumentację programu Visual J++.

W języku Visual Basic można pobrać wartości HRESULT, sprawdzając właściwość Err.Number. Opis błędu można pobrać za pomocą właściwości Err.Description.

Możesz również użyć narzędzia ERRLOOK w programie Microsoft Visual Studio, aby pobrać komunikat o błędzie systemu lub komunikat o błędzie modułu. ERRLOOK automatycznie pobiera tekst komunikatu o błędzie, jeśli przeciągniesz i upuścisz wartość szesnastkową lub dziesiętną z debugera programu Visual Studio lub innej aplikacji zgodnej z Automation. Możesz również wprowadzić wartość, wpisując ją lub wklejając ze schowka IDE, a następnie klikając opcję Wyszukaj.

Poniższa metoda języka C++ wyświetla opis błędu na podstawie danych wejściowych HRESULT.

#include <stdio.h>
#include <windows.h>
#include <tchar.h>

void ErrorDescription(HRESULT hr) 
{ 
     if(FACILITY_WINDOWS == HRESULT_FACILITY(hr)) 
         hr = HRESULT_CODE(hr); 
     TCHAR* szErrMsg; 

     if(FormatMessage( 
       FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, 
       NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
       (LPTSTR)&szErrMsg, 0, NULL) != 0) 
     { 
         _tprintf(TEXT("%s"), szErrMsg); 
         LocalFree(szErrMsg); 
     } else 
         _tprintf( TEXT("[Could not find a description for error # %#x.]\n"), hr); 
}

Poniższa tabela zawiera opisy typowych kodów błędów w modelu COM+.

Kody błędów Definicje
COMADMIN_E_JUŻZAINSTALOWANE
Obiekt jest już zarejestrowany.
COMADMIN_E_APP_FILE_READFAIL
Wystąpił błąd podczas odczytywania pliku aplikacji.
COMADMIN_E_APP_FILE_VERSION
Nieprawidłowy numer wersji w pliku aplikacji.
COMADMIN_E_APP_FILE_WRITEFAIL
Błąd wystąpił przy zapisie do pliku aplikacji.
COMADMIN_E_APPDIRNOTFOUND
Nie można odnaleźć katalogu instalacji aplikacji.
COMQC_E_APPLICATION_NOT_QUEUED
Tylko aplikacje COM+ oznaczone jako "w kolejce" można utworzyć przy użyciu monikera "queue".
COMADMIN_E_APPLICATIONEXISTS
Aplikacja jest już zainstalowana.
COMADMIN_E_APPLID_MATCHES_CLSID
Identyfikator CLSID z tym samym identyfikatorem GUID co nowy identyfikator aplikacji został już zainstalowany na tym komputerze.
COMADMIN_E_APP_NOT_RUNNING
Określona aplikacja nie jest obecnie uruchomiona.
COMADMIN_E_AUTHENTICATIONLEVEL
Nie można ustawić wymaganego poziomu uwierzytelniania dla żądania aktualizacji.
COMADMIN_E_BADPATH
Ścieżka pliku jest nieprawidłowa.
COMADMIN_E_BADREGISTRYLIBID
Identyfikator zarejestrowanej biblioteki typów jest nieprawidłowy.
COMADMIN_E_BADREGISTRYPROGID
Brak identyfikatora progID składnika lub jest on uszkodzony.
COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY (Nie można wyeksportować proxy aplikacji)
Serwer proxy aplikacji nie jest eksportowalny.
COMADMIN_E_NIE_MOŻNA_URUCHOMIĆ_APLIKACJI
Nie można uruchomić aplikacji, ponieważ jest to aplikacja biblioteki lub serwer proxy aplikacji.
Nie można eksportować aplikacji systemowej.
Aplikacja systemowa nie jest eksportowalna.
NIEMOŻNOŚĆ ZAPISANIA SIĘ DO KOMPONENTU
Użytkownik nie może zasubskrybować tego składnika, ponieważ mógł zostać zaimportowany składnik.
COMADMIN_E_CANTCOPYFILE
Wystąpił błąd podczas kopiowania pliku.
COMADMIN_E_CLSIDORIIDMISMATCH
Identyfikatory CLSID lub identyfikatory IID pliku aplikacji nie są zgodne z odpowiednimi bibliotekami DLL.
COMADMIN_E_COMP_MOVE_BAD_DEST
Przenoszenie składnika nie powiodło się, ponieważ aplikacja docelowa już nie istnieje.
COMADMIN_E_COMP_MOVE_ZABLOKOWANY
Przenoszenie składnika zostało niedozwolone, ponieważ aplikacja źródłowa lub docelowa jest aplikacją systemową lub jest obecnie zablokowana przed zmianami.
COMADMIN_E_COMPFILE_BADTLB
Nie można załadować biblioteki typów.
COMADMIN_E_COMPFILE_CLASSNOTAVAIL
Biblioteka DLL nie obsługuje składników wymienionych w bibliotece typów.
COMADMIN_E_COMPFILE_DOESNOTEXIST (plik nie istnieje)
Ten plik nie istnieje.
COMADMIN_E_COMPFILE_GETCLASSOBJ
Metoda GetClassObject nie powiodła się w dll.
COMADMIN_E_COMPFILE_LOADDLLFAIL (Błąd ładowania pliku DLL)
Nie można załadować biblioteki DLL.
COMADMIN_E_COMPFILE_NOREGISTRAR
Rejestrator składników, do którego odwołuje się ten plik, jest niedostępny.
COMADMIN_E_COMPFILE_NOTINSTALLABLE
Plik nie zawiera komponentów ani informacji o komponentach.
COMADMIN_E_COREQCOMPINSTALLED
Składnik w tej samej biblioteki DLL jest już zainstalowany.
COMADMIN_E_DLLLOADFAILED
Nie można załadować biblioteki DLL.
COMADMIN_E_DLLREGISTERSERVER
Funkcja DllRegisterServer nie powiodła się, gdy składnik został zainstalowany.
COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER
Nie można skonfigurować klasy zdarzeń jako składnika subskrybenta. Kiedy próbuje się utworzyć subskrypcję, gdzie klasa zdarzeń pełni rolę subskrybenta, zwracany jest ten błąd.
COMADMIN_E_INVALIDUSERIDS
Co najmniej jeden użytkownik w pliku aplikacji jest nieprawidłowy.
COMADMIN_E_KEYMISSING
Nie można odnaleźć obiektu w wykazie.
COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE
Aplikacje biblioteczne i serwery proxy aplikacji są niezgodne. Ten błąd jest zwracany, gdy podejmowana jest próba wyeksportowania serwera proxy aplikacji, a właściwość aktywacji aplikacji to biblioteka.
COMADMIN_E_NOREGISTRYCLSID
Brak identyfikatora CLSID składnika lub jest on uszkodzony.
COMADMIN_E_NOSERVERSHARE
Żaden udział plików na serwerze nie jest dostępny.
COMADMIN_E_NOTCHANGEABLE (nie można zmienić)
Zmiany w tym obiekcie i jego obiektach podrzędnych zostały wyłączone.
COMADMIN_E_NOTDELETEABLE (błąd: nie można usunąć)
Funkcja delete została wyłączona dla tego obiektu.
COMADMIN_E_NOTINREGISTRY
Nie można odnaleźć obiektu w rejestrze.
Błąd: brak użytkownika (COMADMIN_E_NOUSER)
Co najmniej jeden użytkownik jest nieprawidłowy.
Obiekt nie istnieje.
Nie można odnaleźć jednego z określonych obiektów.
Since this appears to be a recognized error code, no improvements are needed unless an explanatory translation is required for context.
Jeden z wstawionych lub zaktualizowanych obiektów nie należy do prawidłowej kolekcji nadrzędnej.
COMADMIN_E_OBJECTERRORS
Wystąpiły błędy podczas uzyskiwania dostępu do co najmniej jednego obiektu. Aby uzyskać więcej informacji, zobacz kolekcję ErrorInfo.
COMADMIN_E_OBJECTEXISTS
Obiekt, który próbujesz dodać lub zmienić nazwę, już istnieje.
COMADMIN_E_OBJECTINVALID
Brakuje co najmniej jednej właściwości obiektu lub jest on nieprawidłowy.
COMADMIN_E_OBJECTNOTPOOLABLE
Nie można dodać do puli tego obiektu.
COMADMIN_E_PROPERTYSAVEFAILED
Co najmniej jedno ustawienie właściwości jest nieprawidłowe lub powoduje konflikt ze sobą.
COMADMIN_E_PROPERTY_OVERFLOW
Wartość właściwości jest za duża.
COMADMIN_E_REGFILE_CORRUPT
Plik rejestracji jest uszkodzony.
COMADMIN_E_REGISTERTLB
System nie może zarejestrować biblioteki typów.
COMADMIN_E_REGISTRARFAILED
Wystąpiły błędy w rejestratorze składników.
COMADMIN_E_REMOTEINTERFACE
Brak informacji o interfejsie lub jego zmiana.
COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM
Ta operacja nie jest włączona na tej platformie.
ROLA_COMADMIN_NIE_ISTNIEJE
Rola przypisana do składnika, interfejsu lub metody nie istnieje w aplikacji.
COMADMIN_E_ROLEEXISTS
Rola już istnieje.
COMADMIN_E_SERVICENOTINSTALLED
Usługa nie jest zainstalowana.
COMADMIN_E_SESSION
Wersja wykazu serwerów nie jest obsługiwana.
Część już wstrzymana
Co najmniej jeden z określonych procesów aplikacji został już wstrzymany.
Niektóre już działają
Co najmniej jeden z określonych procesów aplikacji był już uruchomiony.
COMADMIN_E_START_APP_NEEDS_COMPONENTS
Aby uruchomić aplikację, musisz mieć składniki w aplikacji.
COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE (Aplikacja usługi nie jest wspólna ani nadająca się do recyklingu)
Aplikacje COM+ działające jako usługa NT mogą nie być oznaczone jako z możliwością zestawienia w puli lub recyklingowane.
COMADMIN_E_SYSTEMAPP
Nie można wykonać tej operacji w aplikacji systemowej.
COMADMIN_E_UŻYTKOWNIK_W_ZESTAWIE
Co najmniej jeden użytkownik jest już przypisany do lokalnego zestawu partycji.
COMADMIN_E_USERPASSWDNOTVALID
Tożsamość lub hasło ustawione w aplikacji jest nieprawidłowe.

izolacja błędów i zasad niepowodzenia

znajdowanie źródła błędu

jak com+ modyfikuje zwracane wartości

strategie obsługi błędów w COM+

Rozwiązywanie Problemów z