我正在开发一个应用程序,它必须通过 HTTP 提供一些 XML 文件。对于 HTTP 服务器实现,我使用 com.sun.net.httpserver.HttpServer 并创建了一个实现 HttpHandler 的处理程序类。非常奇怪的是,我无法从 MyHandler.handle() 方法中获得任何 RuntimeException。我整理了一个示例代码来重现我正在努力解决的案例:
服务器代码:
public class HttpServerTest {
public static void main(String[] args) {
HttpServer server;
try {
server = HttpServer.create(new InetSocketAddress(8080),0);
server.createContext("/", new MyHandler());
server.start();
} catch (IOException ex) {
Logger.getLogger(HttpServerTest.class.getName()).log(Level.SEVERE, null, ex);
}
throw new RuntimeException("Very Important Exception from main");
}
}
和处理程序:
class MyHandler implements HttpHandler {
public MyHandler() {
}
@Override
public void handle(HttpExchange he) throws IOException {
System.out.println("hello");
throw new RuntimeException("Very Important Exception from MyHandler.handle");
}
}
输出:
Exception in thread "main" java.lang.RuntimeException: Very Important Exception from main
at httpservertest.HttpServerTest.main(HttpServerTest.java:26)
hello
hello
hello
hello
hello
hello
如您所见,我可以从主类的 main 方法中获取异常,但我没有从处理程序方法中获取任何内容。有没有人见过这样的东西?运行时异常应该始终在堆栈跟踪跟踪中。
谢谢,佐尔坦