我有一个这样工作的时钟:
catch [System.InvalidOperationException]
{
Process-Exception($_.Exception,1111)
}
然后我想这样处理异常:
# Write exceptions to eventlog and reset socket
function Process-Exception { param ($exception, $eventID)
$dateTime = Get-Date
#Write-EventLog -ComputerName $env:COMPUTERNAME -Source PowerShell -LogName Application -EventId $eventID `
#for now: write-host [string] instead of -Message [string]
write-host "Date and time:`t" + $dateTime + "`r`n`"
write-host "Exception Source:`t" + $exception.Source
write-host "Error Code:`t"+ $exception.NativeErrorCode
write-host "Exception Message:" + $exception.Message
write-host "Stack Trace:`t" + $exception.StackTrace + "`r`n`r`n`
$socket = $null
}
其中`t
是一个选项卡,需要访问$exception
属性。不幸的是,当我这样做时,异常没有发送到方法,只有错误代码(本例为1111)被发送。信息是:
write-host Stack Trace: + Cannot find type [[System.InvalidOperationException]]:
make sure the assembly containing this type is loaded. 9999.StackTrace +
如何向方法发送完整异常?如果你对代码有改进,请告诉我!
这和你的情况不完全一样,但我想知道这是否适合你。据我所知,你的代码看起来不错。我对函数及其参数定义做了一些更改。
function Process-Exception {
[CmdletBinding()]
param (
[System.Exception] $Exception
, [int] $EventID
)
$dateTime = Get-Date
#Write-EventLog -ComputerName $env:COMPUTERNAME -Source PowerShell -LogName Application -EventId $eventID `
#for now: write-host [string] instead of -Message [string]
write-host "Date and time:`t" + $dateTime + "`r`n";
write-host "Exception Source:`t" + $exception.Source
write-host "Error Code:`t"+ $exception.NativeErrorCode
write-host "Exception Message:" + $exception.Message
write-host "Stack Trace:`t" + $exception.StackTrace + "`r`n`r`n"
}
try {
[invalidtype]
}
catch [System.Exception] {
Process-Exception -Exception $_.Exception -EventID 1111;
}
您的函数中存在语法错误,您将其称为错误。
校正功能:
# Write exceptions to eventlog and reset socket
function Process-Exception { param ([Exception]$exception, [int]$eventID)
$dateTime = Get-Date
write-host ("Date and time:`t" + $dateTime + "`r`n")
write-host ("Exception Source:`t" + $exception.Source)
write-host ("Error Code:`t"+ $exception.NativeErrorCode)
write-host ("Exception Message:" + $exception.Message)
write-host ("Stack Trace:`t" + $exception.StackTrace + "`r`n`r`n")
$socket = $null
}
在catch块中调用函数的示例:
Process-Exception $_.Exception 111
参考链接:
如何在PowerShell中连接字符串和变量?
圆括号Powershell函数
这是我刚才玩的一些代码。
function Process-Exception
{
param([System.InvalidOperationException]$Exception, [int] $EventID)
$dateTime = Get-Date
#Write-EventLog -ComputerName $env:COMPUTERNAME -Source PowerShell -LogName Application -EventId $eventID `
#for now: write-host [string] instead of -Message [string]
write-host "Date and time:`t" + $dateTime + "`r`n`"
write-host "Exception Source:`t" + $exception.Source
write-host "Error Code:`t"+ $exception.NativeErrorCode
write-host "Exception Message:" + $exception.Message
write-host "Stack Trace:`t" + $exception.StackTrace + "`r`n`r`n`
$socket = $null
}
function ExceptionTesting
{
Try
{
throw [System.InvalidOperationException] "Here is a message"
}
catch [System.InvalidOperationException]
{
#Write-Host $_.Exception
Process-Exception $_.Exception 1111
}
}
ExceptionTesting
更新:请参阅下面的“已接受”解决方案 当我的应用程序创建一个未处理的异常时,我希望首先给用户一个发送日志文件的机会,而不是简单地终止。我意识到在得到一个随机异常后做更多的工作是有风险的,但是,嘿,最糟糕的是应用程序崩溃,日志文件不会被发送。事实证明,这比我想象的要棘手:) 工作原理:(1)捕获未捕获的异常,(2)提取日志信息并写入文件。 对如何做到这一点有什么建议吗? 下面是一些作为入门指南的代码
本节介绍如何使用三个异常处理程序组件(try、catch 和 finally)来编写异常处理程序。 然后,介绍了 Java SE 7中引入的 try-with-resources 语句。 try-with-resources 语句特别适合于使用Closeable的资源(例如流)的情况。 本节的最后一部分将通过一个示例来分析在各种情况下发生的情况。 以下示例定义并实现了一个名为ListOfNumbe
我目前在我的路由中使用dotry/doCatch块,因此我无法使用全局onException块。 然而,如果驼峰路由中断(由于错误代码或意外/未测试的场景),我希望执行一些业务逻辑。希望这永远不会发生,但我仍然想处理更糟糕的情况。 我不能在全局OneException块中有java.lang.Exception,而且,我不想在每个路由上都添加一个额外的捕获。 在抛出未捕获的异常和中断路由之前,是否
我正在尝试创建一个过滤器来处理异常(请参见在JSF中处理未捕获的异常) 我在日志中看到错误: 我做错了什么?
问题内容: 发现在Java 1.6(以及从Eclipse)上运行时,吞没了该方法中的异常之后,我试图找到一种捕获这些异常的方法,而不会在我的所有实现中都添加throw / catch 。 该API建议覆盖应对此有所帮助: 导致此future报告一个ExecutionException,并以给定throwable作为其原因,除非已经设置或取消了此Future。计算失败时,run方法在内部调用此方法。
我想处理验证器引发的异常。 我用ControllerAdvice注释创建了异常处理程序。它处理其他异常,但不处理MethodArgumentNotValidException。 异常处理程序 已验证的类(没有getter/setter等) Rest api控制器 Api异常(没有getter/setter等) 目前,我从验证器获得了一个空响应,带有错误的\u请求http状态,而其他异常得到了正确处