- 04/01/2019
- 6 분 읽
-


c
간단한 설명
사용하는 방법에 대해 설명합니다Try,Catch,andFinally블록을 handleterminating 오류가 있습니다.,
긴 설명
사용하는Try,Catch,andFinally블록에 대응하 또는 손잡이 terminatingerrors 에서 스크립트가 있습니다. Trap문은 스크립트에서 terminatingerrors 를 처리하는 데 사용할 수도 있습니다. 자세한 내용은 about_Trap 을 참조하십시오.
종료 오류로 인해 문이 실행되지 않습니다. PowerShell 이 어떤 식 으로든 종료 오류를 처리하지 않으면 PowerShell 도 현재 파이프 라인을 사용하여 기능 또는 스크립트 실행을 중지합니다., C#과 같은 다른 언어에서는 종료 오류를 예외라고 합니다.
Try블록을 사용하여 오류를 모니터링하기 위해 powershell 을 원하는 스크립트의 섹션을 정의하십시오. 오류가 발생한 경우에는Try블록에 오류가 첫 번째 저장을$Error자동 변수가 있습니다. PowerShell 은 오류를 처리하기 위해Catch블록에 대해 검색합니다., 는 경우에는Try문지 않는 일치하는Catch블록,PowerShell 계속 검색에 대한 anappropriateCatch블록이나Trap문서 부모 범위 등이 있습니다. 후Catch블록이 완료되거나 없는 경우 적절한Catch블록이나Trap문 찾Finally블록이 실행됩니다. 오류를 처리할 수 없는 경우 오류가 오류 스트림에 기록됩니다.,
ACatch블록은 오류를 추적하거나 스크립트의 예상 흐름을 복구하기위한 명령을 포함 할 수 있습니다. ACatch블록은 어떤 오류 유형을 지정할 수 있습니다. ATry문에는 다른 오류 유형에 대한 여러Catch블록이 포함될 수 있습니다.
AFinally블록은 스크립트에 의해 더 이상 필요하지 않은 리소스를 확보하는 데 사용할 수 있습니다.,
Try, Catch, and Finally resemble the Try, Catch, and Finallykeywords used in the C# programming language.
SYNTAX
A Try statement contains a Try block, zero or more Catch blocks, and zeroor one Finally block. A Try statement must have at least one Catch blockor one Finally block.,
는 다음과 같습니다Try블록 syntax:
try {<statement list>}
Try키워드는 다음 문서로 목록호하는 장치입니다. 는 경우 terminatingerror 발생하는 문장에서 문 목록은,실행 thescript 전달하는 오류체에서Try블록에는 적절한Catchblock.
는 다음과 같습니다Catch블록 syntax:
catch *] {<statement list>}
오류 유형에 나타나 부류입니다., 가장 바깥 쪽 괄호는 요소가옵션.
Catch키워드 다음에 오류 유형 지정의 선택적 목록과 명령문 목록이 이어집니다. Try블록에서 종료 오류가 발생하면 PowerShell 은 적절한Catch블록을 검색합니다. Ifone 이 발견되면Catch블록의 문이 실행됩니다.
Catch블록은 하나 이상의 오류 유형을 지정할 수 있습니다. 오류 유형은 aMicrosoft.NET Framework 예외 또는 a 에서 파생 된 예외입니다.,넷 프레임 워크 예외. ACatch블록은 지정된 오류를 처리합니다.NETFramework 예외 클래스 또는 specifiedclass 에서 파생 된 모든 클래스의.
aCatchblock 이 오류 유형을 지정하면Catchblock 이 오류 유형을 처리합니다. 는 경우에는Catch블록을 지정하지 않는 오류 유형,는Catch블록 처리하는 모든 오류에서 발생하는Tryblock., Try문 caninclude 여러Catch블록에 대한 다른 오류가 지정된 형식입니다.
는 다음과 같습니다Finally블록 syntax:
finally {<statement list>}
Finally키워드는 다음에 문 목록 실행되는 모든 시간 thescript 은,실행 는 경우에도Try문지 않고 실행 오류 또는 오류 wascaught 에서Catch문입니다.ctrl+C 를 누르면 파이프 라인이 중지됩니다., 파이프 라인으로 전송되는 객체는 출력으로 표시되지 않습니다. 따라서,는 경우를 포함하면 문이 표시되고,같은”마지막으로 블록가 실행”,itwill 표시되지 않 후 CTRL+C 는 경우에도Finally블록을 달렸다.
길을 끄는 오류를
다음 예제 스크립트를 보여줍Try블록Catchblock:
try { NonsenseString }catch { "An error occurred." }
Catch키워드는 바에 따라Try블록이나 다른Catchblock.,
PowerShell 은 cmdlet 또는 다른 항목으로”NonsenseString”을 인식하지 못합니다.이 스크립트를 실행하는 다음과 같은 결과를 반환합니다:
An error occurred.
경우 스크립트의 만남”NonsenseString”,그 원인 종료 오류가 있습니다. Catch블록은 블록 내부의 명령문 목록을 실행하여 오류를 처리합니다.
여러 CATCH 문을 사용하여
ATry문은 임의의 수의Catch블록을 가질 수 있습니다., 예를 들어,다음과 같은 스크립트Try블록을 다운로드MyDoc.doc,그리고 containstwoCatch블록
첫 번째Catch블록 핸들의 오류 시스템입니다.Net.WebException andSystem.IO.IOException 형식입니다. 두 번째Catch블록은 anerror 유형을 지정하지 않습니다. 두 번째Catch블록은 발생하는 다른 종료 오류를 처리합니다.
PowerShell 은 상속에 의한 오류 유형과 일치합니다. ACatch블록은 지정된 errorsof 를 처리합니다.,NET Framework 예외 클래스 또는 지정된 클래스에서 파생되는 모든 클래스. 다음 예에 포함Catch블록 thatcatches”명령 Not Found”오류가:
catch {"Inherited Exception" }
지정한 오류 유형,CommandNotFoundException,상속에서 시스템.SystemException 유형. 다음 예에서도 잡 CommandNot 발견된 오류가:
catch {"Base Exception" }
이것은Catch블록 처리하는”명령을 발견되지 않았습니다.”오류의 다른 오류 thatinherit 에서 SystemException 유형입니다.,
지정하는 경우에는 오류 등 및 그 파생된 클래스 중 하나,장소의Catch블록에서 파생된 클래스 전Catch블록에 대한 일반적인 클래스입니다.
를 사용하여 트랩에서도 잡기
종료 오류가 발생할 때에는Try블록Trap정의 withintheTry블록이 있는 경우에도 일치하는Catch블록 Trapstatementtakes 제어합니다.,
경우에는Trap에 존재하는 더 높은 차단보다Try과 일치하는 것이 없다Catch블록 안에는 현재 범위,Trap어, 도 ifany 상위 범위가 일치하는Catchblock.
예외 정보에 액세스
Catch블록 내에서 현재 오류는$_를 사용하여 액세스 할 수 있습니다. 객체는 ErrorRecord 유형입니다.,
try { NonsenseString }catch { Write-Host "An error occurred:" Write-Host $_}
이 스크립트를 실행하는 다음과 같은 결과를 반환합니다:
An Error occurred:The term 'NonsenseString' is not recognized as the name of a cmdlet, function,script file, or operable program. Check the spelling of the name, or if a pathwas included, verify that the path is correct and try again.
있는 속성을 추가할 수 있는 액세스와 같은 ScriptStackTrace,예외 및 ErrorDetails. 는 경우,예를 들어 우리는 우리를 변경하는 스크립트는 다음과 같다.
try { NonsenseString }catch { Write-Host "An error occurred:" Write-Host $_.ScriptStackTrace}
그 결과는 유사하다:
An Error occurred:at <ScriptBlock>, <No file>: line 2
리소스를 해제를 사용하여 마지막으로
을 무료로 사용하는 리소스에 의해 스크립트 추가Finally블록 후Try및Catch블록이 있습니다., Finally블록 문을 실행하는지 여부에 관계없이Try블록을 만날 종료되는 오류가 있습니다. PowerShell 은 스크립트가 종료되기 전에 또는 현재 블록이 범위를 벗어나기 전에Finallyblockbe 를 실행합니다.
AFinally블록은 ctrl+C 를 사용하여 스크립트를 중지하더라도 실행됩니다. 종료 키워드가Catch블록에서 스크립트를 중지하면Finally블록도 실행됩니다.,
see
about_Break
about_Continue
about_Scopes
about_Throw
about_Trap
















답글 남기기