Zatwierdzono: Fortect
Nie odpowiedź, której chcesz? Przeglądaj inne pominięte pytania C # lub zadaj własne pytanie.
Wyjątek może być normalnie używany do sprawdzania wyjątku i wyjątku wewnętrznego dostępnego dla wyjątku wyjątku Win32Exception.
catch (wyjątek e) var w32ex E = jako własny wyjątek Win32; jeśli (w32ex == null) w32ex E = .InnerException jako Win32Exception; jeśli (w32ex! = zero) liczba całkowita = w32ex.ErrorCode; // utwórz ten produkt // zrób inne informacje
Począwszy od C # 6, if może być często używane w fakcie przechwytującym, aby określić ten warunek, który musi być prawdziwy, aby trener mógł zgłosić pojedynczy wyjątek.
grip (Win32Exception ex) gdzie (np. InnerException win32Exception) var w32ex jest równa (Win32Exception) ex.InnerException; kod programu programu var = w32ex.ErrorCode;
Podobnie jak w krytyce, naprawdę musisz zobaczyć, który wyjątek jest uważany za faktycznie zgłoszony, aby dokładnie zrozumieć, co możesz zrobić i w jakich okolicznościach wyspecjalizowany chwyt jest lepszy niż łapanie jednego wyjątku. O nas:
pokaż (BlahBlahException ex) // Co robić Łapać
(z wyjątkiem wyjątku) var hasło = ex.HResult;
Sierpień rozwiązany indywidualnie ’11 o 0:08
61,5 tys. Złota odznaka 1717 Platynowa odznaka 134134 202202 brązowa odznaka
Należy przyjrzeć się odwiedzającym zgłoszony wyjątek, w szczególności .Message
i .InnerException
.
Chciałbym również zapoznać się z dokumentacją dotyczącą InvokeMethod, aby sprawdzić, czy generuje on znacznie bardziej szczegółową klasę wyjątku niż wyjątek – nic więcej niż z powodu wyjątku win32Exception sugerowanego przez @Preet. Może nie powinieneś brać klasy bazowej w Exception i po prostu ją oglądać.
odpowiedział 1 aSierpień 2011 do 00:11
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
8754
W oparciu o rozwiązanie Preet Sangha poniższe informacje powinny w pełni obejmować scenariusz, w którym pracujesz nad dużym rozwiązaniem, które może prowadzić do pewnych wewnętrznych wyjątków.
Wypróbuj
Object oznacza wynik dołączony do processClass.InvokeMethod ("Create", methodArgs); chwycić E) (Wyjątek // Tutaj miałem nadzieję, że otrzymam świetny kod błędu. w dowolnym momencie (ExceptionContainsErrorCode (e, 10004)) // Wykonaj żądane czynności
Commercial bool ExceptionContainsErrorCode (wyjątek e, int ErrorCode) Win32Exception winEx oznacza e dla Win32Exception; jeśli to możliwe (winEx! = zero && ErrorCode == winEx.ErrorCode) zwraca prawdę; fakt (e.InnerException! = null) ExceptionContainsErrorCode (e return.InnerException, ErrorCode); fałszywy zwrot;
Nie zamierzam, co może zagłębić się w potrzebę turysty w celu oceny i wdrożenia najlepszych praktyk, ponieważ obsługa wyjątków poprzez ograniczenie każdego oczekiwanego zapisu wyjątku do jego cichych bloków.
wskazane 1 lutego 2017 o 15:51
Zalecam użycie Clean Message z obiektu wyjątku, takiego jak w poniższym kodzie
Wypróbuj
Object Result oznacza processClass.InvokeMethod ("Create", methodArgs);przechwytywanie (wyjątek e) // Użyj Console.Write (e.Message); ze świetnej aplikacji konsolowej // i operuj MessageBox.Show (e.Message); za pomocą aplikacji WindowsForm i WPF
odpowiedział 29 stycznia 15 przez 23:05
Inną metodą jest bezpośrednie pobranie kodu błędu każdej klasy wyjątku. Do demonstracji:
catch (wyjątek) (na przykład if.InnerException to ServiceResponseException) ServiceResponseException srex = ex.InnerException as ServiceResponseException; ErrorCode group = srex.ErrorCode.ToString ();
odpowiedziałem 17 kwietnia o 12:26.
… …
129 33 srebrne odznaki 46 jasnobrązowych odznak …
…
Przyspiesz teraz wydajność swojego komputera dzięki temu prostemu pobieraniu.
Uruchom sygnał, zatrzymaj blok treści i użyj debugera, aby uczynić wyjątek wizualnie atrakcyjnym i zobaczyć, jakie fakty naprawdę masz. -Alternatywnie możesz uzyskać kod, jeśli nie masz debugowania i zgłosić typ wyjątku za pomocą GetType ().
Użycie wyjątku powinno być łatwe. ToString () zwrócą Po danych różnicy znajduje się linia. Możesz również sprawdzić bazę danych debugowania pakietu oprogramowania, ponieważ koncepcja zawiera informacje debugowania / mniej lub bardziej logi całej aplikacji.
Nieporozumienia dotyczące składni występują podczas projektowania, gdy publikujesz błędy typu w kodzie. Na przykład, zakładając, że piszesz całkowicie podczas pisania, kiedy możesz pisać WHILE w takim przypadku, natkniesz się na błąd składni, ponieważ C# jest zwykle językiem rozróżniającym wielkość liter.