none
PowerShell에서 Exception RRS feed

답변

  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “PowerShell에서 Exception”에 대한 답변을 드리겠습니다.

     

    Step 1 : Exception 목록

     

    Error 변수를 이용해서 최근에 발생한 Exception 대한 정보를 제공할 수 있습니다.

     

    아래의 Script는 최근에 발생한 Exception 목록을 제공합니다.

     

    $error | % {

            $_.Exception.GetType().Name

        }

     

     

    $error | % {

        if($_.Exception.InnerException -ne $null)

        {

            $_.Exception.InnerException.GetType()

        }

        else

        {

    $_.Exception.GetType().Name

        }       

    }

     

     

    Step 2 : 특정 Exception 처리

     

    아래는 임의로 Exception 을 발생시켜 Trap 문에서 System.DivideByZeroException 만 처리를 합니다.

     

    function test

    {

     

        trap [System.DivideByZeroException]

        {

            Write-Host "Invalid name of process."

            continue;

        }

     

        1/$null

    }

     

    Test

    Step 3 : Exception 발생

     

    Throw 키워드는 임의의 Exception 을 생성할 수 있습니다.

     

    아래의 함수는 입력받은 인자의 형을 검사 한 후 올바르지 않을 경우 Exception을 발생 시킵니다.

     

    function Validator1

    {

        param(

            [Parameter(Mandatory=$true)]

            $string1,

            [Parameter(Mandatory=$true)]

            $int1,

            [Parameter(Mandatory=$true)]

            $boolean1       

        )

       

        if(!($string1 -is [System.String] ))

        {

            Throw "Parameter 1 타입이 String 형이 아닙니다."

        }

       

        if(!($int1 -is [System.Int32]))

        {

            Throw "Parameter 2 타입이 int 형이 아닙니다."

        }

       

        if(!($boolean1 -is [System.Boolean]))

        {

            Throw "Parameter 3 타입이 Boolean 형이 아닙니다."

        }  

      

    }

     

    Validator1 "파라미터 1" 2 "파라미터 3"

     

     

    참고 자료

     

    about_Throw

    http://technet.microsoft.com/en-us/library/dd819510.aspx

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2012년 1월 3일 화요일 오전 2:55
    2012년 1월 2일 월요일 오전 8:56
    중재자