Install some basic error handling in Dispatch.
[jrw.git] / src / jrw / Dispatch.java
index d08867c..894bbbf 100644 (file)
@@ -1,14 +1,21 @@
 package jrw;
 
 import java.util.*;
+import java.io.*;
+import jrw.resp.*;
 
 public class Dispatch {
     public static Map<Object, Object> handle(Handler handler, Request req) {
-       while(true) {
-           try {
-               return(handler.handle(req));
-           } catch(Restart r) {
-               handler = r;
+       try(Environment.Frame f = new Environment().frame()) {
+           while(true) {
+               try {
+                   return(handler.handle(req));
+               } catch(Restart r) {
+                   handler = r;
+               } catch(Throwable t) {
+                   t.printStackTrace((PrintStream)req.env.get("jagi.errors"));
+                   handler = new jrw.resp.HttpError(500);
+               }
            }
        }
     }