catching "sig 8"/"floating point exception" in 2026
monkyyy
crazymonkyyy at gmail.com
Mon Sep 28 04:27:40 UTC 2026
```d
#!opend run app.d
import arsd.jsvar;
import arsd.script;
import std.stdio;
import core.stdc.signal;
import core.sys.posix.setjmp;
import core.sys.posix.signal;
jmp_buf jmp;
extern (C) void onFpe(int sig, siginfo_t* info, void* ctx){
"you devided by 0 >:(".writeln;
longjmp(jmp, 1);
}
var globals = var.emptyObject;
void repl(){
write(">");
writeln(interpret(readln(), globals));// .writeln silently does
nothing >:( BAD ADAM
}
void main() {
"start".writeln;
sigaction_t sa;
sa.sa_sigaction = &onFpe;
sa.sa_flags = SA_SIGINFO;
sigemptyset(&sa.sa_mask);
sigaction(SIGFPE, &sa, null);
"end".writeln;
//---
setjmp(jmp);
while(true){
repl();
}
}
```
this was hard to write so heres a copy for the future
More information about the Digitalmars-d
mailing list