Вот такой пример как хандлить сегфаулт в линуксе:

#include 
#include 
#include 

jmp_buf buf;

void handler(int s) {
	printf("Segmentation fault signal caught! Attempting recovery...\n");
	longjmp(buf,1);
}

int main(void) {
	int *p = NULL;
	
	signal(SIGSEGV,handler);
	
	int value = setjmp(buf);
	if (!value) {
		 *p=0xdead;
	}
	else {
		printf("recovered, %i\n",value); 
	}
	return 0;
}

Но есть проблема. Если компилировать через clang с ненулевым уровнем оптимизации, то происходит illegal instruction. Кстати, это тоже можно хандлить. Если компилировать через gcc, то на любом уровне оптимизации всё работает. Видимо, clang делает какие-то оптимизации и не обращает внимания на setjmp. Или тут проблема в стандартах. gcc же использует расширения для си, они могут включать определения для компиляции, где setjmp. Незнаю... Возможно это ещё и проблема x86-64 с её разноразмерными инструкциями. Может быть в ARM и clang справился бы?
В laisi по идее обращения по указателям не часто должны быть, так как индексация идёт по своим правилам и адреса проверяются, исключения выдаются. Но когда всё же будет обращение по адресу, можно делать такую штуку. Хотя это ОСезависимо, а у в laisi такого не надо, но, может быть, в библиотеке error такое будет полезно. Кроме того, когда icolaisi будет запускать файл кода, а не просто компилировать, он автоматически подключит библиотеку error для дебаггинга, а также будет использовать оптимизации для фич хостового процессора, в случае компиляции в файл изначально неизвестно какие фичи нужны и программист сам должен их включать.