From 73fd2cbde82fdb5d5a009c10f15b0790f80732d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=93=E3=81=AE=E4=B8=AD=E4=BA=8C=E7=97=85=E3=81=AB?= =?UTF-8?q?=E7=88=86=E7=84=94=E3=82=92=EF=BC=81?= Date: Wed, 27 Jan 2021 09:54:09 +0800 Subject: [PATCH] handle error test success --- Parallel/IpcParallel/SlaveTask.vb | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Parallel/IpcParallel/SlaveTask.vb b/Parallel/IpcParallel/SlaveTask.vb index 724f6a7..08166b7 100644 --- a/Parallel/IpcParallel/SlaveTask.vb +++ b/Parallel/IpcParallel/SlaveTask.vb @@ -1,5 +1,6 @@ Imports System.IO Imports System.Threading +Imports Microsoft.VisualBasic.ApplicationServices.Debugging.Diagnostics Imports Microsoft.VisualBasic.CommandLine.InteropService Imports Parallel.IpcStream @@ -10,13 +11,18 @@ Public Class SlaveTask ReadOnly processor As InteropService ReadOnly builder As ISlaveTask ReadOnly debugPort As Integer? + ReadOnly ignoreError As Boolean Friend ReadOnly streamBuf As New StreamEmit - Sub New(processor As InteropService, cli As ISlaveTask, Optional debugPort As Integer? = Nothing) + Sub New(processor As InteropService, cli As ISlaveTask, + Optional debugPort As Integer? = Nothing, + Optional ignoreError As Boolean = False) + Me.builder = cli Me.processor = processor Me.debugPort = debugPort + Me.ignoreError = ignoreError End Sub Public Function Emit(Of T)(streamAs As Func(Of T, Stream)) As SlaveTask @@ -87,7 +93,20 @@ Public Class SlaveTask ' resultStream.Dispose() If TypeOf result Is IPCError Then - Throw IPCError.CreateError(DirectCast(result, IPCError)) + If ignoreError Then + With DirectCast(result, IPCError) + For Each msg As String In .GetAllErrorMessages + Call Console.WriteLine($"[error] {msg}") + Next + For Each frame As StackFrame In .GetSourceTrace + Call Console.WriteLine($"[{host.GetHashCode.ToHexString}] {frame.ToString}") + Next + End With + + Return App.LogException(IPCError.CreateError(DirectCast(result, IPCError))) + Else + Throw IPCError.CreateError(DirectCast(result, IPCError)) + End If Else Return result End If