2010-05-13 3 views
3

두 개의 Powershell 스크립트가 있습니다. main.ps1 및 sub.ps1. main.ps1이 sub.ps1을 호출합니다. 경우에 따라 sub.ps1이 예외를 throw합니다. main.ps1에서 sub.ps1에 의해 던진 예외를 잡는 것이 가능합니까?다른 Powershell 스크립트에서 throw 된 예외를 잡는 방법은 무엇입니까?

예 main.ps1 :

try{. .\sub.ps1;} 
catch 
{} 
finally 
{} 

예 sub.ps1 :

try { 
    sub.ps1 
} 
catch { 
    Write-Warning "Caught: $_" 
} 
finally { 
    Write-Host "Done" 
} 

사용 help about_Try_Catch_Finally 자세한 내용은 다음과 같습니다

throw new-object System.ApplicationException "I am an exception"; 

답변

5

간단한 예입니다. 또 다른 방법은 trap을 사용하는 것입니다 (help about_trap 참조). C# 또는 C++ 배경이있는 경우 Try_Catch_Finally 접근 방법을 사용하는 것이 좋습니다 (하지만 정확히 무엇을 할 것인가에 달려 있습니다).

+0

답변 해 주셔서 감사하지만 문제가 해결되지 않았습니다. 점 소싱을 사용하여 스크립트를 호출합니다. 문제가 될 수 있습니까? –

+0

점 소싱 여부에 따라 작동합니다. 문제는 다른 곳에서 발생합니다. 더 많은 정보가 도움이 될 수 있습니다. 어떤 오류가 발생합니까? –

+0

sub.ps1이 * exception *을 던지고 * 오류 *를 쓰지 않는 것이 확실합니까? sub.ps1을 호출하기 전에이'$ ErrorActionPreference = 'stop''을 시도하십시오. –

관련 문제