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