gpt4 book ai didi

.net - 简化字符串异常检查

转载 作者:行者123 更新时间:2023-12-02 08:38:04 25 4
gpt4 key购买 nike

在我的代码中,我将运行一个进程并检索部分标准错误输出(一个数字)以引发一个发送进度数字的事件。

有时我在“.First”方法的这一行有一个异常,因为字符串没有要分割的东西:

out = mp3gain_For_NonTag.StandardError.ReadLine.Trim.Split("%").First

问题是我想在不执行 Try/Catch 的情况下添加必要的检查以避免该异常,因为在我的速度测试中我注意到此过程中的 try/catch 会大大降低性能。

我想简化执行必要检查但不捕获任何异常的代码(到目前为止,我添加的检查将比 try/catch 执行得更快)。

代码如下:

Private Shared Sub Run_MP3Gain_NotTag()

mp3gain_For_NonTag.Start() ' Run process

Dim out as string = mp3gain_For_NonTag.StandardError.ReadToEnd

While Not mp3gain_For_NonTag.HasExited

If Not String.IsNullOrEmpty(out) Then
' This would generate numbers between 1 to 100
out = mp3gain_For_NonTag.StandardError.ReadLine.Trim.Split("%").First
End If

If Integer.TryParse(out, 0) Then
RaiseEvent MP3Gain_Progress(out)
End If

End While

RaiseEvent MP3Gain_Exited()

End Sub

...关于其他信息,这是我不想做的示例,我可以说在修改后的代码中添加一个 try catch,即使没有捕获任何异常类型也会降低性能很多:

Private Shared Sub Run_MP3Gain_NotTag()

mp3gain_For_NonTag.Start() ' Run process

Dim out as string = mp3gain_For_NonTag.StandardError.ReadToEnd

While Not mp3gain_For_NonTag.HasExited

Try
out = mp3gain_For_NonTag.StandardError.ReadLine.Trim.Split("%").First
RaiseEvent MP3Gain_Progress(out)
Catch : End Try

End While

RaiseEvent MP3Gain_Exited()

End Sub

最佳答案

我认为.FirstOrDefault()这里可能就是您的答案。

又看了一眼。我不认为你的问题是第一种方法。 First 抛出的异常是一个症状。您的问题是您通过读取到流的末尾来设置 out,然后您通过尝试读取另一行来运行 Split,这将不返回任何内容,因此出现异常。只需拆分 out,一切都应该没问题:

Dim out as string  = mp3gain_For_NonTag.StandardError.ReadToEnd

While Not mp3gain_For_NonTag.HasExited

If Not String.IsNullOrEmpty(out) Then
' This would generate numbers between 1 to 100
out = out.Trim.Split("%").First()
End If

关于.net - 简化字符串异常检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19281528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com