| Termin | Definicja |
|---|---|
| wywołanie funkcji poza dozwolonym zakresem | Wywołanie funkcji poza dozwolonym zakresem to błąd programistyczny prowadzący do nieprzewidzianego zachowania systemu. Na czym polega wywołanie funkcji poza dozwolonym zakresemWywołanie funkcji poza dozwolonym zakresem oznacza użycie funkcji, metody albo procedury w warunkach, których jej definicja lub kontrakt programistyczny nie przewiduje. Zakres może dotyczyć wartości argumentów, typu danych, liczby parametrów, kolejności wykonania albo stanu obiektu, na którym wykonywana jest metoda. Przykładem jest przekazanie liczby ujemnej do funkcji oczekującej wyłącznie liczby elementów, podanie pustego identyfikatora do procedury wymagającej niepustego tekstu albo wywołanie metody na obiekcie, który nie został jeszcze utworzony. Nie jest to jedna, formalnie zdefiniowana klasa błędu wspólna dla wszystkich języków programowania. Sposób reakcji zależy od języka, biblioteki i implementacji funkcji. W Pythonie odwołanie do elementu listy pod nieistniejącym indeksem może zakończyć się wyjątkiem Kontrakt funkcji a wartości przekazywane przez programKażda funkcja ma pewien kontrakt wejściowy i wyjściowy, nawet jeśli nie został on zapisany w osobnej dokumentacji. Kontrakt określa, jakie argumenty są dopuszczalne, jaki jest ich format oraz jakie warunki muszą być spełnione przed rozpoczęciem działania. Funkcja obliczająca średnią może wymagać kolekcji zawierającej co najmniej jeden element, funkcja dzieląca dwie liczby nie może otrzymać zera jako dzielnika, a metoda operująca na pliku może wymagać wcześniejszego otwarcia uchwytu w odpowiednim trybie. Błąd powstaje wtedy, gdy ograniczenia te nie są sprawdzone albo są sprawdzane w niewłaściwym miejscu. Walidacja danych wejściowych powinna nastąpić przed operacją, która może doprowadzić do awarii. W zależności od projektu może polegać na sprawdzeniu typu, zakresu liczbowego, długości tekstu, obecności wymaganych pól lub aktualnego stanu obiektu. Samo przechwycenie wyjątku nie zawsze rozwiązuje problem. Jeżeli program po błędzie kontynuuje pracę z niepełnymi albo uszkodzonymi danymi, awaria może zostać przesunięta do kolejnego etapu i stać się trudniejsza do powiązania z pierwotną przyczyną. Skutki błędu w działającym programieSkutki wywołania funkcji poza zakresem zależą od tego, gdzie wystąpiło naruszenie i jak środowisko wykonawcze je obsługuje. W aplikacji użytkowej może pojawić się komunikat o błędzie, zamknięcie programu, brak reakcji interfejsu albo niepełne wykonanie operacji. Jeżeli funkcja odpowiada za zapis ustawień, rezultat może zostać zapisany częściowo. Jeżeli przetwarza dane wejściowe, kolejne moduły mogą otrzymać pusty wynik, wartość domyślną albo dane o nieprawidłowej strukturze. W systemach, które nie kontrolują granic pamięci lub korzystają z operacji niskopoziomowych, konsekwencje mogą być poważniejsze. Odczyt poza tablicą może zwrócić przypadkową zawartość pamięci, a zapis poza jej granicą może nadpisać dane używane przez inny fragment programu. Taki błąd nie musi wystąpić przy każdym uruchomieniu, ponieważ wpływ mają między innymi układ pamięci, kolejność operacji i obciążenie procesu. Dlatego brak natychmiastowego komunikatu nie oznacza, że wywołanie jest prawidłowe. W diagnostyce istotne jest porównanie miejsca wystąpienia błędu z wcześniejszymi wartościami argumentów i stanem obiektu. Sprawdzanie przyczyny i naprawa w komputerzeAnalizę należy rozpocząć od dokładnego komunikatu błędu, śladu stosu wywołań oraz danych przekazanych do funkcji. Ślad stosu wskazuje kolejność metod prowadzącą do miejsca, w którym program wykrył problem, ale nie zawsze pokazuje, gdzie powstała błędna wartość. Warto sprawdzić warunki poprzedzające wywołanie, zwłaszcza operacje odczytu pliku, konwersję danych, pobieranie informacji z formularza oraz obliczenia zmieniające indeksy lub limity. Pomocne są testy graniczne, obejmujące między innymi pustą kolekcję, najmniejszą i największą dozwoloną wartość oraz dane o nieprawidłowym typie. Naprawa może polegać na poprawieniu walidacji, zmianie warunku logicznego, zabezpieczeniu dostępu do tablicy, właściwym zainicjalizowaniu obiektu albo zmianie kolejności operacji. Nie powinno się bez analizy usuwać samego komunikatu błędu ani zastępować nieprawidłowej wartości przypadkową wartością domyślną. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i ich podzespołów, a przy problemach z aplikacją można rozpocząć diagnostykę od ustalenia, czy błąd występuje stale, po konkretnej operacji, czy dopiero przy określonych danych. |