Obsługa wyjątków w C ++ jest ograniczona do try / throw / catch. W przeciwieństwie do Object Pascal, Java, C # i Python, nawet w C ++ 11 finallykonstrukcja nie została zaimplementowana. Widziałem okropnie dużo literatury C ++ omawiającej „bezpieczny kod wyjątku”. Lippman pisze, że bezpieczny kod wyjątku jest ważnym, …
Zwykle zgadzam się z większością ostrzeżeń dotyczących analizy kodu i staram się ich przestrzegać. Mam jednak trudniejszy czas z tym: CA1031: Nie przechwytuj ogólnych typów wyjątków Rozumiem uzasadnienie tej reguły. Ale w praktyce, jeśli chcę podjąć to samo działanie niezależnie od zgłoszonego wyjątku, dlaczego miałbym obsługiwać każde z nich konkretnie? …
Zastanawiam się, czy są jakieś plusy i minusy przeciwko temu stylowi: private void LoadMaterial(string name) { if (_Materials.ContainsKey(name)) { throw new ArgumentException("The material named " + name + " has already been loaded."); } _Materials.Add( name, Resources.Load(string.Format("Materials/{0}", name)) as Material ); } Ta metoda powinna być dla każdego nameuruchomiona tylko …
Ponad 10 lat temu w szkole uczyli cię używania specyfikatorów wyjątków. Ponieważ moje doświadczenie jest jednym z nich, programiści Torvaldish C, którzy uparcie unikają C ++, chyba że są do tego zmuszeni, trafiam tylko do C ++ sporadycznie, a kiedy to robię, nadal używam specyfikatorów wyjątków, ponieważ tego się nauczono. …
Bardzo doceniam nowe funkcje Java 8 dotyczące lambd i interfejsów metod domyślnych. Nadal jednak nudzą mnie sprawdzone wyjątki. Na przykład, jeśli chcę tylko wymienić wszystkie widoczne pola obiektu, chciałbym po prostu napisać: Arrays.asList(p.getClass().getFields()).forEach( f -> System.out.println(f.get(p)) ); Ponieważ jednak getmetoda może zgłosić sprawdzony wyjątek, co nie jest zgodne z Consumerumową …
Oto składnia iteratorów w Javie (nieco podobna składnia w C #): Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Co ma sens. Oto równoważna składnia w Pythonie: it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) Myślałem, że wyjątki powinny być stosowane tylko w wyjątkowych …
Używamy SonarQube do analizy naszego kodu Java i ma on następującą regułę (ustawioną na krytyczną): Metody publiczne powinny zgłaszać maksymalnie jeden sprawdzony wyjątek Użycie sprawdzonych wyjątków zmusza osoby wywołujące metody do radzenia sobie z błędami, propagując je lub obsługując. To sprawia, że te wyjątki są w pełni częścią interfejsu API …
Wiele współczesnych języków zapewnia bogate funkcje obsługi wyjątków , ale język programowania Swift firmy Apple nie zapewnia mechanizmu obsługi wyjątków . Pogrążony w wyjątkach, tak jak ja, mam problem z otuleniem się, co to znaczy. Swift ma asercje i oczywiście zwraca wartości; ale mam problem z wyobrażeniem sobie, w jaki …
Wiem, że mogę zgłosić wyjątek od konstruktora w PHP, ale czy powinienem to zrobić? Na przykład, jeśli wartość parametru nie jest taka, jak się spodziewałem. A może powinienem odłożyć zgłoszenie wyjątku do momentu wywołania metody Jakie są zalety i wady w obu przypadkach?
Właściwie o tym myślałem. Sam nie jestem rodzimym językiem angielskim, ale wciąż mam wieloletnie doświadczenie w programowaniu i zawsze o to pytałem. Dlaczego nazywa się wyjątek, ale nie jest błędem, ponieważ są błędami. Może być PageNotFoundErrorzamiast PageNotFoundException.
To pytanie ma na celu zastosowanie do dowolnego języka programowania OO, który obsługuje obsługę wyjątków; Używam C # tylko w celach ilustracyjnych. Wyjątki są zwykle zgłaszane, gdy pojawia się problem, którego kod nie może natychmiast obsłużyć, a następnie przechwytywane w catchklauzuli w innym miejscu (zwykle zewnętrznej ramce stosu). P: Czy …
Metoda A wywołuje metodę B, która z kolei wywołuje metodę C. Nie ma obsługi wyjątków w metodzie B lub metodzie C. Ale istnieje metoda obsługi wyjątków w metodzie A. W metodzie C występuje wyjątek. Teraz wyjątek dotyczy metody MethodA, która odpowiednio ją obsługuje. Co jest z tym nie tak? Moim …
Aby obsłużyć kilka możliwych błędów, które nie powinny powstrzymywać wykonywania, mam errorzmienną, którą klienci mogą sprawdzać i używać do zgłaszania wyjątków. Czy to jest anty-wzór? Czy istnieje lepszy sposób, aby sobie z tym poradzić? Na przykład w akcji możesz zobaczyć API mysqli PHP . Załóżmy, że problemy z widocznością (akcesory, …
W Pythonie często słyszę, że lepiej „błagać o wybaczenie” (wyłapywanie wyjątków) zamiast „pytać o pozwolenie” (sprawdzanie typu / warunku). Jeśli chodzi o wymuszanie pisania kaczek w Pythonie, to jest to try: x = foo.bar except AttributeError: pass else: do(x) lepszy czy gorszy niż if hasattr(foo, "bar"): do(foo.bar) else: pass pod …
Napisałem strukturę, która reprezentuje współrzędne szerokości i długości geograficznej. Ich wartości wynoszą od -180 do 180 dla długości i 90 do -90 dla szerokości. Jeśli użytkownik tej struktury podaje mi wartość spoza tego zakresu, mam 2 opcje: Rzuć wyjątek (argument poza zakresem) Konwertuj wartość na ograniczenie Ponieważ współrzędne -185 ma …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.