Vykdymo laiko klaidos:
- Programos vykdymo klaida yra klaida, kuri atsiranda sėkmingai sukompiliavus programai veikiant.
- Vykdymo laiko klaidos paprastai vadinamos klaidas ir dažnai aptinkami derinimo proceso metu prieš išleidžiant programinę įrangą.
- Kai viešai išplatinus programą atsiranda vykdymo klaidų, kūrėjai dažnai išleidžia pataisymus arba nedidelius atnaujinimus, skirtus klaidoms ištaisyti.
- Kiekvienas gali rasti problemų, su kuriomis gali susidurti, sąrašą, jei yra pradedantysis Šis straipsnis .
- Sprendžiant problemas internetinėse platformose galima susidurti su daugybe veikimo laiko klaidų, kurios nėra aiškiai nurodytos su jomis pateikiamame pranešime. Yra įvairių vykdymo klaidų, tokių kaip loginių klaidų , Įvesties/išvesties klaidos , neapibrėžtos objekto klaidos , dalyba iš nulio klaidų , ir daug daugiau.
Vykdymo laiko klaidų tipai:
- SIGFPE: SIGFPE yra a slankusis kablelis klaida. Jį praktiškai visada sukelia a padalijimas iš 0 . Iš esmės gali būti trys pagrindinės SIGFPE klaidos priežastys, aprašytos taip:
- Dalyba iš nulio.
- Modulo Operation by Zero.
- Sveikasis skaičius perpildymas.
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(); } }>Išvestis:// JavaScript program to demonstrate division by zero behavior // Perform division by zero let result = 5 / 0; // Print the result console.log(result);>

- SIGABRT: Programa aptinka pačią klaidą, tada šis signalas generuojamas naudojant skambutį į nutraukti () funkcija. Šį signalą taip pat naudoja standartinė biblioteka, kad praneštų apie vidinę klaidą. tvirtinti () funkcija in C++ taip pat naudoja abort() šiam signalui generuoti. Žemiau yra programa, iliustruojanti SIGBRT klaidą: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()>Išvestis:// 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: Ši klaida reiškia Nulinis išėjimo kodas . Dėl C vartotojų, ši klaida bus sugeneruota, jei pagrindinis() metodas grąžos neturi 0 pareiškimas. Java /C++ vartotojai gali sukurti šią klaidą, jei padarys išimtį. Toliau pateikiamos galimos NZEC klaidos priežastys:
- Begalinė rekursija arba jei baigiasi kamino atmintis.
- Pasiekiamas neigiamas masyvo indeksas.
- ArrayIndexOutOfBounds išimtis.
- StringIndexOutOfBounds išimtis.
Java#include #include using namespace std; int main() { vectorarr = {1, 2}; try { // Intentional Error: Prieiga prie elemento už ribų 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> Pythonpublic 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])>
Išvestis:// 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: Ši klaida yra labiausiai paplitusi klaida ir yra žinoma kaip Segmentacijos gedimas . Jis generuojamas, kai programa bando pasiekti atmintį, kuriai neleidžiama, arba bando pasiekti atminties vietą neleistinu būdu. Kai kurių dažniausiai pasitaikančių segmentavimo gedimų priežasčių sąrašas yra toks:
- Prieiga prie masyvo už ribų.
- NULL nuorodų panaikinimas.
- Atlaisvintos atminties panaikinimas.
- Neinicijuotų rodyklių nuorodų panaikinimas.
- Neteisingas naudojimas & (adresas) ir * (nuorodų panaikinimo) operatoriai.
- Netinkamos formatavimo specifikacijos printf ir scanf teiginiuose.
- Kamino perpildymas.
- Rašymas į tik skaitymo atmintį.
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); }>Pythonimport 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); } }>Išvestis:// 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.>
Būdai, kaip išvengti vykdymo laiko klaidų:
- Venkite naudoti kintamuosius, kurie nebuvo inicijuoti. Jie gali būti nustatyti 0 jūsų sistemoje, bet ne kodavimo platformoje.
- Patikrinkite kiekvieną masyvo elemento pasireiškimą ir įsitikinkite, kad jis nėra už ribų.
- Venkite skelbti per daug atminties. Patikrinkite klausime nurodytą atminties limitą.
- Venkite deklaruoti per daug Stack atmintis . Dideli masyvai turėtų būti deklaruojami globaliai už funkcijos ribų.
- Naudokite return kaip pabaigos teiginį.
- Venkite nuorodų laisvos atminties arba nulinės rodyklės .



