Błędy czasu wykonania:
- Błąd wykonawczy w programie to błąd, który pojawia się podczas działania programu po pomyślnej kompilacji.
- Błędy wykonawcze są powszechnie nazywane tzw błędy i często można je znaleźć podczas procesu debugowania przed wydaniem oprogramowania.
- Kiedy po publicznym udostępnieniu programu pojawiają się błędy w czasie wykonywania, programiści często wydają łatki lub małe aktualizacje mające na celu naprawienie błędów.
- Każdy może znaleźć listę problemów, z którymi może się spotkać, jeśli jest początkujący Ten artykuł .
- Podczas rozwiązywania problemów na platformach internetowych można napotkać wiele błędów czasu działania, które nie są jasno określone w dołączonym komunikacie. Występuje wiele błędów wykonawczych, np błędy logiczne , Błędy wejścia/wyjścia , niezdefiniowane błędy obiektu , dzielenie przez zero błędów , i wiele więcej.
Rodzaje błędów wykonawczych:
- SIGFPE: SIGFPE jest zmiennoprzecinkowy błąd. Jest to praktycznie zawsze spowodowane przez dzielenie przez 0 . Mogą istnieć trzy główne przyczyny błędu SIGFPE opisane w następujący sposób:
- Dzielenie przez zero.
- Operacja modulo przez zero.
- Całkowitą przepełnienie.
Jawa// C++ program to illustrate // the SIGFPE error #include using namespace std; // Driver Code int main() { int a = 5; // Division by Zero cout << a / 0; return 0; }>Python3public class Main { public static void main(String[] args) { int a = 5; try { // Division by Zero System.out.println(a / 0); } catch (ArithmeticException e) { // Handle the ArithmeticException System.out.println('Error: Division by zero is not allowed.'); } } }>C## Python program to illustrate # the ZeroDivisionError # Driver Code def main(): a = 5 try: # Division by Zero print(a / 0) except ZeroDivisionError as e: print(f'Error: {e}') if __name__ == '__main__': main()>JavaScriptusing System; class Program { static void Main() { int a = 5; try { // Division by Zero Console.WriteLine(a / 0); } catch (DivideByZeroException ex) { // Handling DivideByZeroException Console.WriteLine('Error: ' + ex.Message); } Console.ReadLine(); } }>Wyjście:// JavaScript program to demonstrate division by zero behavior // Perform division by zero let result = 5 / 0; // Print the result console.log(result);>

- SIGABRT: Jest to błąd sam w sobie wykrywany przez program, wówczas sygnał ten jest generowany za pomocą wywołania anulować() funkcjonować. Sygnał ten jest również używany przez bibliotekę standardową do zgłaszania błędu wewnętrznego. zapewniać() funkcjonować w C++ używa również metody abort() do wygenerowania tego sygnału. Poniżej znajduje się program ilustrujący błąd SIGBRT:C++
Jawa// C++ program to illustrate // the SIGBRT error #include using namespace std; // Driver Code int main() { // Assigning excessive memory int a = 100000000000; int* arr = new int[a]; return 0; }>Python3public class Main { public static void main(String[] args) { try { // Assigning excessive memory int a = 1000000000; int[] arr = new int[a]; } catch (OutOfMemoryError e) { // Catch the OutOfMemoryError System.err.println('Caught OutOfMemoryError: ' + e.getMessage()); } } } //This code is contributed by Adarsh>JavaScript# Python program to illustrate # the MemoryError # Driver Code def main(): try: # Attempting to allocate excessive memory a = 100000000000 arr = [0] * a except MemoryError as e: print(f'Error: {e}') if __name__ == '__main__': main()>Wyjście:// JavaScript program to illustrate the MemoryError // Driver Code function main() { try { // Attempting to allocate excessive memory const a = 100000000000; const arr = new Array(a).fill(0); } catch (e) { console.log('Error: ' + e.message); } } main();>
- NZEC: Ten błąd oznacza Niezerowy kod wyjścia . Dla C użytkowników, ten błąd zostanie wygenerowany, jeśli metoda main(). nie ma powrotu 0 oświadczenie. Jawa Użytkownicy /C++ mogą wygenerować ten błąd, jeśli zgłoszą wyjątek. Poniżej znajdują się możliwe przyczyny pojawienia się błędu NZEC:
- Nieskończona rekurencja lub jeśli zabraknie pamięci stosu.
- Dostęp do ujemnego indeksu tablicy.
- Wyjątek ArrayIndexOutOfBounds.
- Wyjątek StringIndexOutOfBounds.
Jawa#include #include using namespace std; int main() { vectortablica = {1, 2}; try { // Zamierzony błąd: dostęp do elementu poza zakresem cout<< arr.at(2) << endl; // Accessing index 2 which is out of bounds } catch (const out_of_range& e) { cout << 'Error the index is out of bound'<< endl; // Handle the out_of_range exception } return 0; } //This code is contrbiuted by Adarsh> Pytonpublic class Main { public static void main(String[] args) { int[] arr = {1, 2}; // Intentional Error: Accessing an element out of bounds System.out.println(arr[2]); // Error: Accessing index 2 which is out of bounds } } //this code is contributed by Utkarsh.>JavaScript# Python program to illustrate # the NZEC Error # Driver Code if __name__ == '__main__': arr = [1, 2] # Runtime Error # Array Index out of Bounds print(arr[2])>
Wyjście:// JavaScript program to illustrate // the error similar to NZEC Error // Driver Code let arr = [1, 2]; // Runtime Error // Array Index out of Bounds console.log(arr[2]);>

- SIGSEGV: Ten błąd jest najczęstszym błędem i jest znany jako Błąd segmentacji . Jest generowany, gdy program próbuje uzyskać dostęp do pamięci, do której nie wolno uzyskać dostępu, lub próbuje uzyskać dostęp do komórki pamięci w niedozwolony sposób. Lista niektórych typowych przyczyn błędów segmentacji to:
- Dostęp do tablicy poza zakresem.
- Dereferencja wskaźników NULL.
- Dereferencjonowanie zwolnionej pamięci.
- Dereferencje niezainicjowanych wskaźników.
- Niewłaściwe użycie & (adres) i * operatory (dereferencyjne).
- Niewłaściwe specyfikatory formatowania w instrukcjach printf i scanf.
- Przepełnienie stosu.
- Zapis do pamięci tylko do odczytu.
Jawa// C++ program to illustrate // the SIGSEGV error #include using namespace std; // Function with infinite // Recursion void infiniteRecur(int a) { return infiniteRecur(a); } // Driver Code int main() { // Infinite Recursion infiniteRecur(5); }>Pytonimport java.util.*; public class Main { // Function with infinite Recursion static void infiniteRecur(int a) { // Recursively call the function without a base case infiniteRecur(a); } // Driver Code public static void main(String[] args) { // Infinite Recursion infiniteRecur(5); } } //This code is contributed by Monu.>C## Python program to illustrate # the SIGSEGV error # Function with infinite # Recursion def infiniteRecur(a): return infiniteRecur(a) # Driver Code if __name__ == '__main__': # Infinite Recursion infiniteRecur(5) #This code is contributed by Utkarsh.>
JavaScriptusing System; class Program { // Function with infinite Recursion static void InfiniteRecur(int a) { // Recursively calling the function InfiniteRecur(a); } // Driver Code static void Main() { // Infinite Recursion InfiniteRecur(5); } }>Wyjście:// Function with infinite Recursion function infiniteRecur(a) { // Recursively call the function without a base case infiniteRecur(a); } // Infinite Recursion infiniteRecur(5); // Note: JavaScript does not have tail-call optimization, // so running this code will eventually lead to a maximum call stack size exceeded error.>
Sposoby uniknięcia błędów wykonawczych:
- Unikaj używania zmiennych, które nie zostały zainicjowane. Można je ustawić 0 w twoim systemie, ale nie na platformie kodowania.
- Sprawdź każde wystąpienie elementu tablicy i upewnij się, że nie przekracza ono dopuszczalnego zakresu.
- Unikaj deklarowania zbyt dużej ilości pamięci. Sprawdź limit pamięci określony w pytaniu.
- Unikaj deklarowania zbyt wielu informacji Pamięć stosu . Duże tablice należy deklarować globalnie poza funkcją.
- Użyj return jako instrukcji końcowej.
- Unikaj odniesień wolna pamięć Lub wskaźniki zerowe .



