10.10.1.3 Throw Statement
The Throw statement raises an exception, which is represented by an instance of a type derived from System.Exception. If the expression is not classified as a value or is not a type derived from System.Exception, then a compile-time error occurs. If the expression evaluates to a null reference at run time, then a System.NullReferenceException exception is raised instead.
A Throw statement may omit the expression within a catch block of a Try statement. In that case, the statement rethrows the exception currently being handled within the catch block.
ThrowStatement ::= Throw [ Expression ] StatementTerminator