 
   ## Raising exceptions
 
-  The most common way to raise an exception is via the raise
+  The most common way to raise an exception is via the `raise/2`
   function:
 
       defexception MyException, [:message]
       raise MyException,
-        message: "did not get what expected, got: #{inspect value}"
-
-  In many cases though, it is more convenient to just pass the
-  expected value to raise and generate the message in the `exception/1`
+        message: "did not get what was expected, got: #{inspect value}"
+
+  In many cases it is more convenient to pass the
+  expected value to `raise` and generate the message in the `exception/1`
   callback:
 
       defexception MyException, [:message] do
         def exception(opts) do
-          msg = "did not get what expected, got: #{inspect opts[:actual]}"
+          msg = "did not get what was expected, got: #{inspect opts[:actual]}"
           MyException[message: msg]
         end
       end

  specialized one.

  Second, falling back to `Any` adds an extra lookup to all types,
  which is unecessary overhead unless an implementation for Any is
  required.

  ## Types


  Exceptions are simply records with three differences:

  1. Exceptions are required to define a function `exception/1`
     that receives keyword arguments and returns the exception.
     This function is a callback usually invoked by `raise/2`;

