0

我用来记录有异常的函数名。代码如下

function sample {
    try{
        $functionname = "sample"
        throw "Error"
    }
    catch{
        write-error "[$functionName] :Exception occured "
        $_
    }
}

sample

现在我试图在课堂方法中遵循同样的事情。但是在 try 块中声明的变量在 catch 块中是不可见的。

class sample{

[string] samplemethod() {

    try{
        $MethodName = "SampleMethod"

        throw "error"

    }
    catch{
        Write-error "[$MethodName] : Exception occured"

        $_
    }
    return "err"
}

}

$obj = [sample]::new()
$obj.samplemethod()

它抛出异常如下

在 line:12 char:23 + Write-error "[$MethodName] : Exception occurred" + ~~~~~~~~~~~ 方法中没有分配变量。

类方法和函数之间的作用域规则是否改变?

4

1 回答 1

-1

try catch 块中除了 Class 和方法之外还有不同的作用域。try 块中声明的变量不能从 catch 块中访问。下面的代码应该毫无例外地执行。
类样本{

[string] samplemethod() {
    $MethodName = "SampleMethod1"

    try{
        $test='hello'

        throw "error"

    }
    catch{
        Write-Host $MethodName
        Write-error "[$MethodName] : Exception occured"

        $_
    }
    return "err"
}

}

$obj = [sample]::new()
$obj.samplemethod()
于 2018-11-21T10:49:16.163 回答