我用来记录具有exception的函数名。代码如下
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]:发生异常” + ~~~~~~~~~~~~方法中未分配变量。
作用域规则在类方法和函数之间是否发生了变化?
答案 0 :(得分:-1)
除类和方法外,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()