Skip to content

Commit 76262d3

Browse files
authored
Merge pull request #793 from jooby-project/791
Err.Missing is thrown when req.param(name) encounters name missing - …
2 parents 74e5823 + 9d9410c commit 76262d3

File tree

2 files changed

+33
-10
lines changed

2 files changed

+33
-10
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.jooby.issues;
2+
3+
import org.jooby.Err;
4+
import org.jooby.test.ServerFeature;
5+
import org.junit.Test;
6+
7+
public class Issue791 extends ServerFeature {
8+
9+
{
10+
get("/791", req -> req.param("missingParam").value());
11+
12+
err(Err.Missing.class, (req, rsp, x) -> {
13+
rsp.send("Missing");
14+
});
15+
}
16+
17+
@Test
18+
public void specializedErrHandlerShouldCatchErrExceptions() throws Exception {
19+
request()
20+
.get("/791")
21+
.expect("Missing");
22+
}
23+
24+
}

jooby/src/main/java/org/jooby/Router.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2437,10 +2437,9 @@ default <T> WebSocket.Definition ws(final Class<? extends WebSocket.OnMessage<T>
24372437
* @return This jooby instance.
24382438
*/
24392439
default Router err(final Class<? extends Throwable> type, final Err.Handler handler) {
2440-
return err((req, rsp, err) -> {
2441-
Throwable cause = err.getCause();
2442-
if (type.isInstance(cause)) {
2443-
handler.handle(req, rsp, err);
2440+
return err((req, rsp, x) -> {
2441+
if (type.isInstance(x) || type.isInstance(x.getCause())) {
2442+
handler.handle(req, rsp, x);
24442443
}
24452444
});
24462445
}
@@ -2454,9 +2453,9 @@ default Router err(final Class<? extends Throwable> type, final Err.Handler hand
24542453
* @return This jooby instance.
24552454
*/
24562455
default Router err(final int statusCode, final Err.Handler handler) {
2457-
return err((req, rsp, err) -> {
2458-
if (statusCode == err.statusCode()) {
2459-
handler.handle(req, rsp, err);
2456+
return err((req, rsp, x) -> {
2457+
if (statusCode == x.statusCode()) {
2458+
handler.handle(req, rsp, x);
24602459
}
24612460
});
24622461
}
@@ -2470,9 +2469,9 @@ default Router err(final int statusCode, final Err.Handler handler) {
24702469
* @return This jooby instance.
24712470
*/
24722471
default Router err(final Status code, final Err.Handler handler) {
2473-
return err((req, rsp, err) -> {
2474-
if (code.value() == err.statusCode()) {
2475-
handler.handle(req, rsp, err);
2472+
return err((req, rsp, x) -> {
2473+
if (code.value() == x.statusCode()) {
2474+
handler.handle(req, rsp, x);
24762475
}
24772476
});
24782477
}

0 commit comments

Comments
 (0)