Documentation

This is machine translation

Translated by
Mouse over text to see original. Click the button below to return to the English verison of the page.

Use try/catch to Handle Errors

You can use a `try/catch` statement to execute code after your program encounters an error. `try/catch` statements can be useful if you:

• Want to finish the program in another way that avoids errors

• Need to clean up unwanted side effects of the error

• Have many problematic input parameters or commands

Arrange `try/catch` statements into blocks of code, similar to this pseudocode:

```try try block... catch catch block... end```
If an error occurs within the ```try block```, MATLAB® skips any remaining commands in the `try` block and executes the commands in the `catch block`. If no error occurs within `try block`, MATLAB skips the entire `catch block`.

For example, a `try/catch` statement can prevent the need to throw errors. Consider the `combinations` function that returns the number of combinations of `k` elements from `n` elements:

```function com = combinations(n,k) com = factorial(n)/(factorial(k)*factorial(n-k)); end```
MATLAB throws an error whenever ```k > n```. You cannot construct a set with more elements, `k`, than elements you possess, `n`. Using a try/catch statement, you can avoid the error and execute this function regardless of the order of inputs:
```function com = robust_combine(n,k) try com = factorial(n)/(factorial(k)*factorial(n-k)); catch com = factorial(k)/(factorial(n)*factorial(k-n)); end end```
`robust_combine` treats any order of integers as valid inputs:
```C1 = robust_combine(8,4) C2 = robust_combine(4,8)```
```C1 = 70 C2 = 70```

Optionally, you can capture more information about errors if a variable follows your `catch` statement:

`catch MExc`
`MExc` is an `MException` class object that contains more information about the thrown error. To learn more about accessing information from `MException` objects, see Exception Handling in a MATLAB Application.