 		/**
 		 * Used during compiling only.
 		 */		
-		private static const _jumpStatements:Array = [ST_BREAK, ST_CONTINUE, ST_RETURN];
+		private static const _jumpStatements:Array = [ST_BREAK, ST_CONTINUE, ST_RETURN, ST_THROW];
 		
 		/**
 		 * Only used during evaluation and decompiling.

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

				
				// cut out tokens between brackets
				var subArray:Array = tokens.splice(open + 1, close - open - 1);
				
				if (debug)
					trace("compiling tokens", leftBracket, subArray.join(' '), rightBracket);
				
				if (leftBracket == '{')
				{
					compiledToken = compileTokens(subArray, true);
					tokens.splice(open, 2, compileOperator(';', [compiledToken]));
					continue;
				}
				
				var separator:String = ',';
				if (leftBracket == '(' && statements.hasOwnProperty(token) && statements[token])
					separator = ';'; // statement parameters are separated by ';'
				compiledParams = compileArray(subArray, separator);

				if (leftBracket == '[') // this is either an array or a property access
