不编译:sparkjava异常处理

时间:2016-01-23 21:39:28

标签: java intellij-idea exception-handling spark-java

我正在尝试按照此处的sparkjava异常处理示例进行操作,但没有成功:http://sparkjava.com/documentation.html#exception-mapping。看来他们发布的代码不太对劲?我能够修复其中一个已发布的方法,以便进行编译。文档页面上没有编译的方法是:

get("/throwexception", (request, response) -> {
    throw new NotFoundException();
});

我更改为此代码并编译:

    get(new Route("/throwexception") {
        @Override
        public Object handle(Request request, Response response)  {
            throw new IllegalArgumentException();
        }
    });

但是,我无法使用此方法进行编译。怎么了?我正在使用java 8和IntelliJ社区版15.0.2进行编译。我的java模块设置为语言级别8.这是可疑方法:

    exception(Exception.class, (e, request, response) -> {
        //TODO: implement this after it compiles.
    });

以下是我从编译器得到的错误:

Error:(83, 9) java: cannot find symbol
  symbol:   method exception(java.lang.Class<java.lang.Exception>,(e,request[...]->{ })
  location: class org.me.JournalController

为了确认我真正使用的是java 8,这个使用lambda表达式的例子确实编译:

public class Lambdas {
    public static void main(String[] args) throws Exception {
        new Lambdas().start();
        Thread.sleep(1000);
    }

    public void start(){
        Interface f = () -> System.out.println("test");
    }
}

3 个答案:

答案 0 :(得分:1)

原始代码使用lambda表达式,您应该使用Java 8来编译它。

答案 1 :(得分:1)

我的maven文件列出了两次sparkjava依赖项。我认为我的IDE在某些时候会自动为我导入1.1.1而我没有意识到这一点。我有1.1.1和2.3。当我删除过时的1.1.1 sparkjava依赖项时,一切都按预期工作。

答案 2 :(得分:0)

您可以将throw语句提取到函数中:

get("/throwexception", () -> BlowUp());

(snip)

public static void BlowUp()
{
    throw new NotFoundException();
});