为什么函数作用域和方法作用域中的变量不同?



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

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()

相关内容

  • 没有找到相关文章

最新更新