 								}
 								return result; // break at top level
 							}
+							else if (method == operators[ST_THROW])
+							{
+								//TODO - find try/catch/finally
+								throw call.evaluatedParams[0];
+							}
 						}
 						else if (ASSIGN_OP_LOOKUP[method] && compiledParams.length == 2) // two params means local assignment
 						{

				if (startIndex < tokens.length - 1)
				{
					cfc = tokens[startIndex] as CompiledFunctionCall;
					if (!cfc || (cfc.evaluatedMethod != operators[';'] && !statements.hasOwnProperty(cfc.evaluatedMethod)))
					{
						if (stmt)
							throw new Error("Unexpected " + stmt);

		
		private static const ST_VAR:String = 'var';
		private static const ST_RETURN:String = 'return';
		private static const ST_THROW:String = 'throw';
		
		private static const _statementsWithoutParams:Array = [
			ST_ELSE, ST_DO, ST_BREAK, ST_CONTINUE, ST_CASE, ST_DEFAULT,
