我用来记录有异常的函数名称。代码如下
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()
它抛出异常如下
行:12 字符:23 + 写入错误"[$MethodName]:发生异常" + ~~~~
~~~~~~~~~ 变量未在方法中赋值。
类方法和函数之间的范围规则是否更改?
除了类和方法之外,try catch 块中还存在不同的范围。在 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()