Erori de rulare:
- O eroare de rulare într-un program este o eroare care apare în timp ce programul rulează după ce a fost compilat cu succes.
- Erorile de rulare sunt denumite în mod obișnuit gandaci și sunt adesea găsite în timpul procesului de depanare înainte de lansarea software-ului.
- Când apar erori de rulare după ce un program a fost distribuit publicului, dezvoltatorii lansează adesea patch-uri sau mici actualizări concepute pentru a remedia erorile.
- Oricine poate găsi lista problemelor cu care s-ar putea confrunta dacă este începător Acest articol .
- În timpul rezolvării problemelor pe platformele online, se pot confrunta cu multe erori de rulare, care nu sunt specificate clar în mesajul care vine cu ele. Există o varietate de erori de rulare care apar, cum ar fi erori logice , Erori de intrare/ieșire , erori de obiect nedefinite , împărțirea la zero erori , si multe altele.
Tipuri de erori de rulare:
- SIGFPE: SIGFPE este un punctul de plutire eroare. Este practic întotdeauna cauzată de a împărțirea cu 0 . Pot exista în principal trei cauze principale ale erorii SIGFPE descrise după cum urmează:
- Impartirea cu zero.
- Modul de operare prin Zero.
- Integer Overflow.
Java// 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(); } }>Ieșire:// JavaScript program to demonstrate division by zero behavior // Perform division by zero let result = 5 / 0; // Print the result console.log(result);>

- SIGABRT: Este o eroare în sine detectată de program, apoi acest semnal este generat folosind apelul la anula() funcţie. Acest semnal este folosit și de biblioteca standard pentru a raporta o eroare internă. afirma() functioneaza in C++ folosește de asemenea abort() pentru a genera acest semnal. Mai jos este programul pentru a ilustra eroarea SIGBRT:C++
Java// 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()>Ieșire:// 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: Această eroare denotă Cod de ieșire non-zero . Pentru C utilizatorii, această eroare va fi generată dacă metoda main(). nu are retur 0 afirmație. Java Utilizatorii /C++ ar putea genera această eroare dacă lansează o excepție. Mai jos sunt posibilele motive pentru care se obține o eroare NZEC:
- Recursie infinită sau dacă rămâneți fără memorie stivă.
- Este accesat indexul matricei negative.
- Indicele matricei este în afara limitelor.
- StringIndexOutOfBounds Excepție.
Java#include #include using namespace std; int main() { vectorarr = {1, 2}; try { // Eroare intenționată: accesarea unui element în afara limitelor<< 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> Pitonpublic 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])>
Ieșire:// 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: Această eroare este cea mai frecventă eroare și este cunoscută ca Eroare de segmentare . Este generat atunci când programul încearcă să acceseze o memorie care nu are permisiunea de a accesa sau încearcă să acceseze o locație de memorie într-un mod care nu este permis. Lista unora dintre motivele comune pentru erorile de segmentare sunt:
- Accesarea unei matrice în afara limitelor.
- Dereferențând pointerii NULL.
- Dereferențierea memoriei eliberate.
- Dereferențând pointerii neinițializați.
- Utilizarea incorectă a & (adresa) și * operatori (dereferențiere).
- Specificatori de formatare neadecvați în instrucțiunile printf și scanf.
- Debordarea stivei.
- Scrierea în memoria numai pentru citire.
Java// 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); }>Pitonimport 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); } }>Ieșire:// 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.>
Modalități de a evita erorile de rulare:
- Evitați utilizarea variabilelor care nu au fost inițializate. Acestea pot fi setate la 0 pe sistemul dvs., dar nu pe platforma de codare.
- Verificați fiecare apariție a unui element de matrice și asigurați-vă că nu este în afara limitelor.
- Evitați să declarați prea multă memorie. Verificați limita de memorie specificată în întrebare.
- Evitați să declarați prea multe Stack Memorie . Matricele mari ar trebui declarate global în afara funcției.
- Utilizați return ca instrucțiune finală.
- Evitați referirea memorie libera sau pointeri nuli .



