Wydaje się, że istnieje pewna zgoda co do tego, że komunikaty o wyjątkach powinny zawierać przydatne szczegóły . Dlaczego wiele typowych wyjątków od składników systemu nie zawiera użytecznych szczegółów? Kilka przykładów: NET Listdostęp wskaźnik ArgumentOutOfRangeExceptionnie nie mów mi, że wartość indeksu został osądzony i był nieprawidłowy, ani nie mów mi …
Słyszałem, że powiedzenie, że włączenie zerowych referencji w językach programowania jest „błędem miliarda dolarów”. Ale dlaczego? Jasne, mogą powodować wyjątki NullReference, ale co z tego? Każdy element języka może być źródłem błędów, jeśli zostanie użyty nieprawidłowo. A jaka jest alternatywa? Przypuszczam, że zamiast powiedzieć to: Customer c = Customer.GetByLastName("Goodman"); // …
W późnych latach 90-tych całkiem sporo pracowałem z bazą kodu, która używała wyjątków jako kontroli przepływu. Zaimplementowano maszynę skończoną do sterowania aplikacjami telefonii. Ostatnio przypominają mi się te dni, ponieważ tworzyłem aplikacje internetowe MVC. Oba mają Controllerdecydujące miejsce, w którym należy iść dalej, i dostarczają dane do logiki docelowej. Działania …
Tworzę bibliotekę przeznaczoną do publicznego wydania. Zawiera różne metody działania na zestawach obiektów - generowanie, sprawdzanie, partycjonowanie i rzutowanie zbiorów na nowe formy. W razie IEnumerablepotrzeby jest to biblioteka klasy C # zawierająca włączone rozszerzenia w stylu LINQ , która ma zostać wydana jako pakiet NuGet. Niektóre metody w tej …
Obecnie sprawdzam kod i jedną z rzeczy, które zauważam, jest liczba wyjątków, w których komunikat o wyjątku wydaje się powtarzać, gdzie wystąpił wyjątek. na przykład throw new Exception("BulletListControl: CreateChildControls failed."); Wszystkie trzy elementy w tej wiadomości mogę opracować na podstawie reszty wyjątku. Znam klasę i metodę ze śledzenia stosu i …
Moim szczególnym przypadkiem jest to, że użytkownik może przekazać ciąg znaków do aplikacji, aplikacja analizuje go i przypisuje do obiektów strukturalnych. Czasami użytkownik może wpisać coś nieprawidłowego. Na przykład ich wkład może opisywać osobę, ale może powiedzieć, że jej wiek to „jabłko”. Prawidłowe zachowanie w takim przypadku polega na wycofaniu …
Pracuję nad książką „Head First Python” (to jest mój język do nauki w tym roku) i doszedłem do sekcji, w której dyskutują o dwóch technikach kodu: Sprawdzanie obsługi First vs. Exception. Oto przykład kodu Python: # Checking First for eachLine in open("../../data/sketch.txt"): if eachLine.find(":") != -1: (role, lineSpoken) = eachLine.split(":",1) …
W Javie, co jest bardziej zalecane i dlaczego? Oba typy będą zgłaszać wyjątki, więc ich obsługa jest taka sama. assertjest nieco krótszy, ale nie jestem pewien, ile to ma znaczenie. public void doStuff(Object obj) { assert obj != null; ... } vs public void doStuff(Object obj) { if (obj == …
Czasami czasami muszę napisać metodę lub właściwość dla biblioteki klas, dla której nie jest niczym wyjątkowym brak prawdziwej odpowiedzi, ale niepowodzenie. Coś nie może zostać określone, nie jest dostępne, nie znaleziono, nie jest obecnie możliwe lub nie ma już dostępnych danych. Myślę, że istnieją trzy możliwe rozwiązania dla tak stosunkowo …
Niedawno rozpocząłem programowanie w języku C #, ale mam spore doświadczenie w Haskell. Ale rozumiem, że C # jest językiem zorientowanym obiektowo, nie chcę wciskać okrągłego kołka w kwadratowy otwór. Przeczytałem artykuł Microsoft dotyczący wyjątku Zgłaszanie wyjątków : NIE zwracaj kodów błędów. Ale przyzwyczajony do Haskell, używałem typu danych C …
Klasyczny sposób programowania to try ... catch. Kiedy stosować trybez catch? W Pythonie następujące elementy wydają się zgodne z prawem i mogą mieć sens: try: #do work finally: #do something unconditional Jednak kod nic nie catchzrobił. Podobnie można by pomyśleć w Javie: try { //for example try to get a …
Czy kiedykolwiek próbowałeś zsumować wszystkie liczby od 1 do 2 000 000 w swoim ulubionym języku programowania? Wynik można łatwo obliczyć ręcznie: 2 000 001 000 000, czyli około 900 razy więcej niż maksymalna wartość 32-bitowej liczby całkowitej bez znaku. Drukuje się C # -1453759936- wartość ujemna! I chyba Java …
Przeczytałem jakiś kod kolegi i stwierdziłem, że często łapie on różne wyjątki, a następnie zawsze zgłasza „RuntimeException”. Zawsze myślałem, że to bardzo zła praktyka. Czy się mylę?
Niedawno zacząłem pracować w miejscu z kilkoma znacznie starszymi programistami (około 50+). Pracowali nad krytycznymi aplikacjami dotyczącymi lotnictwa, w których system nie mógł ulec awarii. W rezultacie starszy programista ma tendencję do kodowania w ten sposób. Zwykle umieszcza w obiektach wartość logiczną, aby wskazać, czy wyjątek powinien zostać zgłoszony, czy …
Myślałem o tym i nie mogłem podać żadnego przykładu. Dlaczego ktoś miałby chcieć złapać wyjątek i nic z tym nie zrobić? Czy możesz podać przykład? Może jest to po prostu coś, czego nigdy nie należy robić.
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.