РАЗДЕЛ
	about_Throw

КРАТКОЕ ОПИСАНИЕ
	Описание ключевого слова Throw, генерирующего ошибку с 
	завершением работы.

ПОЛНОЕ ОПИСАНИЕ
	Ключевое слово Throw вызывает ошибку с завершением работы. 
	Ключевое слово Throw можно использовать для остановки обработки 
	команды, функции или скрипта. 

	Например, ключевое слово Throw можно использовать в блоке скрипта 
	инструкции If для отклика на условие или в блоке Catch инструкции 
	Try-Catch-Finally. Ключевое слово Throw можно использовать и при 
	декларировании параметров, чтобы сделать параметр функции 
	обязательным. 

	Ключевое слово Throw может выводить любой объект, в том числе 
	строку сообщения для пользователя или объект, вызвавший ошибку. 


 СИНТАКСИС
	Ключевое слово Throw имеет следующий синтаксис:

		throw [<expression>]


	Выражение в синтаксисе Throw является необязательным. Если 
	ключевое слово Throw не входит в блок Catch и не включает 
	выражение, оно генерирует ошибку ScriptHalted.

		C:\PS> throw

		ScriptHalted
		At line:1 char:6
		+ throw <<<<
			+ CategoryInfo		: OperationStopped: (:) [], RuntimeException
			+ FullyQualifiedErrorId : ScriptHalted


	Если ключевое слово Throw используется в блоке Catch без 
	выражения, оно выводит текущее исключение RuntimeException. 
	Дополнительные сведения см. в разделе about_Try_Catch_Finally.


 ИСПОЛЬЗОВАНИЕ КЛЮЧЕВОГО СЛОВА THROW ДЛЯ СТРОКИ
	Необязательным выражением в составе блока Throw может быть 
	строка, как показано в следующем примере: 

		C:\PS> throw "Это ошибка."

		Это ошибка.
		В строке:1 знак:6
		+ throw <<<< "Это ошибка."
			+ CategoryInfo		: OperationStopped: (This is an error.:String) [], RuntimeException  
			+ FullyQualifiedErrorId : Это ошибка.


 ИСПОЛЬЗОВАНИЕ КЛЮЧЕВОГО СЛОВА THROW ДЛЯ ДРУГИХ ОБЪЕКТОВ

	Выражение также может являться объектом, который выводит объект,
	соответствующий процессу PowerShell, как показано в следующем примере.

		C:\PS> throw (get-process powershell)

		System.Diagnostics.Process (powershell)
		At line:1 char:6
		+ throw <<<<  (get-process powershell)
			+ CategoryInfo		: OperationStopped: (System.Diagnostics.Process (powershell):Process) [], 
										RuntimeException
			+ FullyQualifiedErrorId : System.Diagnostics.Process (powershell)

	Свойство TargetObject объекта ErrorRecord в автоматической 
	переменной $error можно использовать для изучения ошибки.


		C:\PS> $error[0].targetobject

		Handles  NPM(K)	PM(K)	WS(K) VM(M)   CPU(s)	 Id ProcessName														
		-------  ------	-----	----- -----   ------	 -- -----------														
			319	26	61016	70864   568	 3.28   5548 powershell 
   

	Также с помощью ключевого слова Throw может выводиться объект 
	ErrorRecord или исключение платформы Microsoft.NET Framework. В следующем 
	примере ключевое слово Throw используется для вывода объекта 
	System.FormatException.

		C:\PS> $formatError = new-object system.formatexception

		C:\PS> throw $formatError

		Формат одного из идентифицированных элементов неверен.
		В строке:1 знак:6
		+ throw <<<< $formatError
			+ CategoryInfo		: OperationStopped: (:) [], FormatException 
			+ FullyQualifiedErrorId : Формат одного из идентифицированных элементов неверен.


 ВОЗВРАЩАЕМАЯ ОШИБКА
	Ключевое слово Throw может генерировать объект ErrorRecord. 
	Свойство Exception объекта ErrorRecord содержит объект 
	RuntimeException. Остальная часть объекта ErrorRecord и объекта 
	RuntimeException меняются в зависимости от объекта, выводимого 
	ключевым словом Throw.

	Объект RunTimeException заключается в объект ErrorRecord, а 
	объект ErrorRecord автоматически сохраняется в автоматической 
	переменной $Error


 ИСПОЛЬЗОВАНИЕ КЛЮЧЕВОГО СЛОВА THROW ДЛЯ СОЗДАНИЯ ОБЯЗАТЕЛЬНОГО ПАРАМЕТРА
	Ключевое слово Throw можно использовать для превращения параметра 
	функции в обязательный. 

	Это альтернатива использованию параметра Mandatory ключевого 
	слова Parameter. При использовании параметра Mandatory система 
	требует у пользователя ввести обязательное значение параметра. 
	При использовании ключевого слова Throw команда прекращает работу 
	и выводит запись об ошибке.

	Например, ключевое слово Throw в подвыражении параметра делает 
	параметр Path обязательным параметром функции. 

	В данном случае ключевое слово Throw выводит строку сообщения, 
	однако именно присутствие ключевого слова Throw генерирует ошибку 
	с завершением работы, если параметр Path не указан. Выражение 
	после ключевого слова Throw является необязательным.

		function Get-XMLFiles
		{
			param ($path = $(throw "The Path parameter is required."))
			dir -path $path\* -include *.xml -recurse | sort lastwritetime | ft lastwritetime, attributes, name  -auto
	}


СМ. ТАКЖЕ
	about_Break
	about_Continue
	about_Scope
	about_Trap
	about_Try_Catch_Finally