#error handling in spawning threads

1 messages · Page 1 of 1 (latest)

grizzled totem
#
C:\Users\yusuf.karaca\scoop\apps\zig-dev\0.12.0-dev.297\lib\std\Thread\Pool.zig:94:13: error: error is ignored
            @call(.auto, func, closure.arguments);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\yusuf.karaca\scoop\apps\zig-dev\0.12.0-dev.297\lib\std\Thread\Pool.zig:94:13: note: consider using 'try', 'catch', or 'if'
referenced by:
    spawn__anon_4885.Closure: C:\Users\yusuf.karaca\scoop\apps\zig-dev\0.12.0-dev.297\lib\std\Thread\Pool.zig:89:58
    runFn: C:\Users\yusuf.karaca\scoop\apps\zig-dev\0.12.0-dev.297\lib\std\Thread\Pool.zig:93:45
    remaining reference traces hidden; use '-freference-trace' to see all reference traces
#

i don't have an idea how can i use error handling in spawning the function, any idea?

#
var func = handle_stream catch |err| blk: {
            std.debug.print("some error happened while handling client :{any}\n", .{err});
            break :blk;
        };

        _ = try pool.spawn(func, .{&stream}); // Execute stream handler

i tried something like this but it gets

videocode.zig:44:34: error: expected error union type, found 'fn(*net.Stream) @typeInfo(@typeInfo(@TypeOf(videocode.handle_stream)).Fn.return_type.?).ErrorUnion.error_set!void'
        var func = handle_stream catch |err| blk: {
                   ~~~~~~~~~~~~~~^~~~~
referenced by:
    callMain: C:\Users\yusuf.karaca\scoop\apps\zig-dev\0.12.0-dev.297\lib\std\start.zig:574:32
    initEventLoopAndCallMain: C:\Users\yusuf.karaca\scoop\apps\zig-dev\0.12.0-dev.297\lib\std\start.zig:508:34
    remaining reference traces hidden; use '-freference-trace' to see all reference traces
#

soo

#

any idea?

#
fn handle_stream(stream: *net.Stream) void {
    var buffer: [256]u8 = undefined;
    _ = stream.read(&buffer) catch unreachable;

    std.debug.print("request buffer is: {s}\n", .{buffer});

    const response = "HTTP/1.1 200 OK\nContent-Type: text/plain\nContent-Length: 11\n\nHello World";

    // Write response
    _ = stream.write(response) catch unreachable;
}

now it works but this time i need to guarantee no may return an error or i gotta handle every single one

#

instead of i wanna do something like oh boi there was some error happened while runnin your thread

ivory cloak
#

did u mean to put this in #1019652020308824145 ?