   defmacro cond(clauses), do: error!([clauses])
 
   @doc ~S"""
-  Evaluates the given expressions and handles any error, exit
+  Evaluates the given expressions and handles any error, exit,
   or throw that may have happened.
 
   ## Examples

          :error_b
      end

  Similarly, an exception inside an else clause is not caught or rescued
  inside the same try:

      try do
        try do

          IO.puts "Invalid argument given"
      catch
        value ->
          IO.puts "Caught #{inspect(value)}"
      else
        value ->
          IO.puts "Success! The result was #{inspect(value)}"
      after
        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
  pattern matching (similar to the `case` special form).

  Note that calls inside `try/1` are not tail recursive since the VM
  needs to keep the stacktrace in case an exception happens.

  ## `rescue` clauses

  Besides relying on pattern matching, `rescue` clauses provide some
  conveniences around exceptions that allow one to rescue an
  exception by its name. All the following formats are valid patterns
  in `rescue` clauses:

      try do
        UndefinedModule.undefined_function
