- 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 Finally
keywords 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
블록에는 적절한Catch
block.
는 다음과 같습니다Catch
블록 syntax:
catch *] {<statement list>}
오류 유형에 나타나 부류입니다., 가장 바깥 쪽 괄호는 요소가옵션.
Catch
키워드 다음에 오류 유형 지정의 선택적 목록과 명령문 목록이 이어집니다. Try
블록에서 종료 오류가 발생하면 PowerShell 은 적절한Catch
블록을 검색합니다. Ifone 이 발견되면Catch
블록의 문이 실행됩니다.
Catch
블록은 하나 이상의 오류 유형을 지정할 수 있습니다. 오류 유형은 aMicrosoft.NET Framework 예외 또는 a 에서 파생 된 예외입니다.,넷 프레임 워크 예외. ACatch
블록은 지정된 오류를 처리합니다.NETFramework 예외 클래스 또는 specifiedclass 에서 파생 된 모든 클래스의.
aCatch
block 이 오류 유형을 지정하면Catch
block 이 오류 유형을 처리합니다. 는 경우에는Catch
블록을 지정하지 않는 오류 유형,는Catch
블록 처리하는 모든 오류에서 발생하는Try
block., Try
문 caninclude 여러Catch
블록에 대한 다른 오류가 지정된 형식입니다.
는 다음과 같습니다Finally
블록 syntax:
finally {<statement list>}
Finally
키워드는 다음에 문 목록 실행되는 모든 시간 thescript 은,실행 는 경우에도Try
문지 않고 실행 오류 또는 오류 wascaught 에서Catch
문입니다.ctrl+C 를 누르면 파이프 라인이 중지됩니다., 파이프 라인으로 전송되는 객체는 출력으로 표시되지 않습니다. 따라서,는 경우를 포함하면 문이 표시되고,같은”마지막으로 블록가 실행”,itwill 표시되지 않 후 CTRL+C 는 경우에도Finally
블록을 달렸다.
길을 끄는 오류를
다음 예제 스크립트를 보여줍Try
블록Catch
block:
try { NonsenseString }catch { "An error occurred." }
Catch
키워드는 바에 따라Try
블록이나 다른Catch
block.,
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
블록 Trap
statementtakes 제어합니다.,
경우에는Trap
에 존재하는 더 높은 차단보다Try
과 일치하는 것이 없다Catch
블록 안에는 현재 범위,Trap
어, 도 ifany 상위 범위가 일치하는Catch
block.
예외 정보에 액세스
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 은 스크립트가 종료되기 전에 또는 현재 블록이 범위를 벗어나기 전에Finally
blockbe 를 실행합니다.
AFinally
블록은 ctrl+C 를 사용하여 스크립트를 중지하더라도 실행됩니다. 종료 키워드가Catch
블록에서 스크립트를 중지하면Finally
블록도 실행됩니다.,
see
about_Break
about_Continue
about_Scopes
about_Throw
about_Trap
답글 남기기