         try do
           1 / x
         rescue
-          # The TryClauseError can not be rescued here:
+          # The TryClauseError cannot be rescued here:
           TryClauseError ->
             :error_a
         else

  exception by its name. All the following formats are valid patterns
  in `rescue` clauses:

      try do
        UndefinedModule.undefined_function
      rescue
        UndefinedFunctionError -> nil
      end

      try do
        UndefinedModule.undefined_function
      rescue
        [UndefinedFunctionError] -> nil
      end

      # rescue and bind to x
      try do
        UndefinedModule.undefined_function
      rescue
        x in [UndefinedFunctionError] -> nil
      end

      # rescue all and bind to x
      try do
        UndefinedModule.undefined_function
      rescue
        x -> nil
      end

  ## Erlang errors

  Erlang errors are transformed into Elixir ones when rescuing:


        IO.puts "This is printed regardless if it failed or succeed"
      end

  The `rescue` clause is used to handle exceptions while the `catch`
  clause can be used to catch thrown values and exits.
  The `else` clause can be used to control flow based on the result of
  the expression. `catch`, `rescue`, and `else` clauses work based on
