If you use Python language, then it is imperative to understand error and exceptions handling. Error handling helps to increase the codes’ robustness. It guards the code against any potential failure which could end up terminating the program in an uncontrolled way.
Exception handling is crucial. However, before you understand why exception handling is necessary and know the built-in exception types, it is first essential to be clear on the differences between Error and Exception.
Errors and Exceptions – The difference
- You cannot handle errors, but you can handle Python exceptions at runtime. The error can be syntax or a parsing error. There can be several kinds of exceptions that may arise during an execution that is not inoperable unconditionally.
- Errors can indicate critical problems that any good app should not attempt to catch, whereas exceptions might indicate those conditions that any application should try to capture.
- Errors are unchecked exceptions, and these are irrecoverable, which any programmer should not attempt to handle. On the other hand, exception handling makes the code robust and does not allow any potential failures that may cause the program to stop unexpectedly.
So suppose you write a code that has been deployed in production, but it terminates because of an exception. No client would appreciate it. It is thus important that you handle the exception in advance and avoid any unwanted chaos.
Types of errors
There are various kinds of errors and let us discuss them in detail.
Syntax Error
Syntax errors are also known as parsing errors. These are caused because the parser finds a syntactic problem in the code. The parser runs into an error while it is busy executing the code. It is the token that precedes the error which causes failure. Python can rectify the fundamental error. To let you see where the error was detected, Python tells you the name of the file along with the number of the line. This makes it easy for you to check and rectify the code.
Out-of-Memory Error
The Out-Of-Memory errors usually are dependent on the RAM of your system and are related to Heap. If your code has large objects or many referenced objects in its memory, you will see the out-of-memory error. This can happen because of several reasons.
- If you are using a 32-bit python architecture, the maximum memory allocated to you is very low, somewhere between 2 to 4 GB
- If you are loading a large data file
- If you are running deep learning or machine learning model
You will be able to take care of the memory errors using exception handling. This is a fallback exception where the interpreter runs entirely out of memory, and thus the current execution should immediately come to a stop. This is when Python throws an out-of-memory error letting the script catch itself and break out of the out-of-the-memory error and thus recover itself.
But because Python uses the memory management architecture used by the C language, there is no certainty that all the scripts will recover. At times the memory error command causes an unrecoverable crash. Thus using exception handling to deal with such kinds of errors is best avoided.
Recursion Error
Recursion error is related to stack and happens when you use the call function. Recursion error occurs when there are many methods, each inside of the other, that get executed. One is with an immeasurable recursion and is limited to the stack size.
All the local variables and the data associated with the method call are put in the stack. For every method call, there is one stack frame created. The local and the call method relevant data gets placed in the stack frame. When the execution stands complete, the stack frame gets removed.
The stack frame is populated with method data for each call, but it is not free. This means that it calls itself in an infinite loop method call. You will then see a recursion or a Stackoverflow error. In order to reproduce this error, a recurrent function is defined, which will be recursive.
Indentation Error
The indentation error is similar to the syntax error. However, it is only specific to the issues in the script that is indentation-related.
Want to learn more about Python error and exception handling? Then enroll in the best data science courses online.
Exceptions
Even when the syntax in any expression or statement is correct, it could cause an error when it is executed. The Python exceptions are those errors that get detected during the execution, and these are not fatal. The exception object gets created when the Python script raises an exception. In case the script is not able to handle this exception, then the program will terminate abruptly.
The program will mostly not handle the exceptions, which let it throw an error message.
Type Error and Zero Division Error
The exception error is printed as a message like a type error and the zero division error. Both of these are in-built exceptions.
The remaining part of the lines will be detailed with reasons that caused the error.
Keyboard Interrupt Error
The KeyboardInterrupt exception flashes when the program tries to stop from running. It may also happen by mistake. In this case, using the exception handling to avoid the issue can be of use.
Standard Error
The standard errors in programming are Arithmetic Error, OverFlow Error, Zero Division Error, and Floating Point Error. All these fall in the arithmetic base class and are exception errors raised in handling arithmetic operations.
- Zero Division – This occurs when the denominator equals zero.
- Overflow Error – This occurs when the result of any arithmetic operation is out of range.
- Assertion Error – This occurs when the assertive statement fails.
- Attribute Error – When any non-existent attribute gets references, which raises an attribute error when that fails.
- Import Error – The error pops up when you wish to import a module that does not exist in its traditional path.
- Lookup Error – This is a base class for exceptions that occurs when any key or an index used in sequence or mapping is invalid
The two kinds of exceptions raised are index error and key error.
- Key Error – If you are trying to access a key that is not in the list, then this is a key error exception
- Index Error – If you wish to access an index or a sequence that does not exist because it is out of range, this is an index error.
- Memory Error – This gets raised when the operation does not have any memory to process further.
- Name Error– The error pops up when a global or a local name is not found.
- Runtime Error or Not Implemented Error – The run time error is a base class for the Notimplemented error. The abstract method in the user-defined class has to raise this exception. This is when the derived class overrides this method.
- Type Error – The exception is raised when two unrelated operands are combined
- Value Error – This exception is raised when the built-in function or operation gets an argument with a right type but a wrong value.
You learn all of these and much more in the course Masters in Data Science in India.
Conclusion
Exception handling breaks the program’s typical control flow and gives a mechanism to decouple the Python error handling, making the code robust.