在我的代码中,我将运行一个进程并检索部分标准错误输出(一个数字)以引发发送进度号的事件。简化字符串异常检查
有时候我在这一行的“首先”方法异常“引起的字符串无关分裂:
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
...而对于更多的信息,这是什么,我不希望做一个样品,我可以说,在这增加了尝试捕捉像改性壳聚糖代码代码,即使没有捕获任何异常亲切,这将降低性能提升不少:
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
你的方法看起来不错。除此之外,我想你应该在[codereview.stackexchange.com](http://codereview.stackexchange.com/)上更好地发布这样的问题。 –
@Tim Schmelter非常感谢我不知道代码评论存在一个部分。 – ElektroStudios
第一个人也很好看。关于不使用异常的说法是完全正确的,因为空虚并不是特例,这就是为什么它会成为一个性能问题。看不到任何真正需要“改进”的版本1.什么不适合你? –