Error Handling is the approach of creating a program that handles the exceptions thrown by different conditions without crashing the program. For example, consider the case when you are multiplying two matrices of orders (m x n) and (m x n). Now, anyone who has done elementary linear algebra knows that this multiplication is not feasible because the number of columns in matrix 1 is not equal to the number of rows in matrix 2. Computers are also aware of the same fact and any programming language will through an Error/Exception in this scenario. To avoid crashing of the program, the programmer inserts a condition that checks for the same scenario. This is error handling. Now we will see how Error Handling is done in MATLAB.
Using if-else Ladder:
A trivial way of handling errors is by using the if-else conditional. Consider the following example, where we create a function to calculate the combination of two positive integers. Now, the only error possible in this function is when k>n. So, let us see how MATLAB responds to the case.
Example 1:
Matlab
comb(5,9)
function c = comb(n,k)
c=factorial(n)/(factorial(k)*factorial(n-k));
end
|
Output:
MATLAB gives following error.
To avoid this error, we can simply insert an if-else conditional to check whether k<n or not. If not then, the program will calculate the combination of (k, n).
Example 2:
Matlab
n=5
k=9
if (n>k)
comb(n,k)
else
comb(k,n)
end
function c = comb(n,k)
c=factorial(n)/(factorial(k)*factorial(n-k));
end
|
Output:
This will calculate the combination of (9,5):
The Try-Catch Blocks:
A better approach for doing the same is by using the try-catch block. Try block takes the statements that might throw an error/exception and when encountered, all the remaining statements are skipped, and the program moves to the catch block for the handled error/exception.
Example 3:
Matlab
n=5;
k=9;
try
comb(n,k)
catch
comb(k,n)
end
function c = comb(n,k)
c=factorial(n)/(factorial(k)*factorial(n-k));
end
|
Output:
The benefit of using try-catch block over the if-else conditional is that the latter can only handle exceptions which are known before compilation. On the other hand, try-catch can handle exceptions that are not known in advanced.