## TRY-CATCH Try and Catch Statement

Section: Flow Control

### Usage

The `try` and `catch` statements are used for error handling and control. A concept present in `C++`, the `try` and `catch` statements are used with two statement blocks as follows

       try
         statements_1
       catch
         statements_2
       end

The meaning of this construction is: try to execute `statements_1`, and if any errors occur during the execution, then execute the code in `statements_2`. An error can either be a FreeMat generated error (such as a syntax error in the use of a built in function), or an error raised with the `error` command.

### Examples

Here is an example of a function that uses error control via `try` and `catch` to check for failures in `fopen`.

         read_file.m
    function c = read_file(filename)
    try
       fp = fopen(filename,'r');
       c = fgetline(fp);
       fclose(fp);
    catch
       c = ['could not open file because of error :' lasterr]
    end

Now we try it on an example file - first one that does not exist, and then on one that we create (so that we know it exists).

    --> read_file('this_filename_is_invalid')
    In base(base) on line 0
    In simkeys(built in) on line 0
    In Eval(read_file('this_file...) on line 1
    In read_file(read_file) on line 3

    c =

     could not open file because of error :No such file or directory for fopen argument this_filename_is_invalid

    ans =

     could not open file because of error :No such file or directory for fopen argument this_filename_is_invalid

    --> fp = fopen('test_text.txt','w');
    --> fprintf(fp,'a line of text
    ');
    --> fclose(fp);
    --> read_file('test_text.txt')

    ans =

     a line of text