diff --git a/endtoendtests/Azure.Functions.Java.Tests.E2E/Azure.Functions.Java.Tests.E2E/HttpEndToEndTests.cs b/endtoendtests/Azure.Functions.Java.Tests.E2E/Azure.Functions.Java.Tests.E2E/HttpEndToEndTests.cs index 480be1d8..085df1fc 100644 --- a/endtoendtests/Azure.Functions.Java.Tests.E2E/Azure.Functions.Java.Tests.E2E/HttpEndToEndTests.cs +++ b/endtoendtests/Azure.Functions.Java.Tests.E2E/Azure.Functions.Java.Tests.E2E/HttpEndToEndTests.cs @@ -65,6 +65,12 @@ public async void HttpTriggerJavaStatic() public async Task HttpTrigger_BindingName() { Assert.True(await Utilities.InvokeHttpTrigger("BindingName", "/testMessage", HttpStatusCode.OK, "testMessage")); + } + + [Fact] + public async Task HttpTrigger_StaticBlockFailure() + { + Assert.True(await Utilities.InvokeHttpTrigger("StaticBlockFailure", "", HttpStatusCode.InternalServerError, "")); } } } diff --git a/endtoendtests/src/main/java/com/microsoft/azure/functions/endtoend/StaticBlockFailure.java b/endtoendtests/src/main/java/com/microsoft/azure/functions/endtoend/StaticBlockFailure.java new file mode 100644 index 00000000..199d1319 --- /dev/null +++ b/endtoendtests/src/main/java/com/microsoft/azure/functions/endtoend/StaticBlockFailure.java @@ -0,0 +1,25 @@ +package com.microsoft.azure.functions.endtoend; + +import com.microsoft.azure.functions.*; +import com.microsoft.azure.functions.annotation.AuthorizationLevel; +import com.microsoft.azure.functions.annotation.FunctionName; +import com.microsoft.azure.functions.annotation.HttpTrigger; + +import java.util.Optional; + +public class StaticBlockFailure { + static { + Optional.empty().orElseThrow(() -> new RuntimeException("exception raised in static block")); + } + @FunctionName("StaticBlockFailure") + public HttpResponseMessage run( + @HttpTrigger( + name = "req", + methods = {HttpMethod.GET, HttpMethod.POST}, + authLevel = AuthorizationLevel.ANONYMOUS) + HttpRequestMessage> request, + final ExecutionContext context) { + context.getLogger().info("Java HTTP trigger processed a request of function StaticBlockFailure."); + return request.createResponseBuilder(HttpStatus.OK).body("Hello, e2e test").build(); + } +} diff --git a/src/main/java/com/microsoft/azure/functions/worker/handler/MessageHandler.java b/src/main/java/com/microsoft/azure/functions/worker/handler/MessageHandler.java index 9844fb28..d474b87d 100644 --- a/src/main/java/com/microsoft/azure/functions/worker/handler/MessageHandler.java +++ b/src/main/java/com/microsoft/azure/functions/worker/handler/MessageHandler.java @@ -45,10 +45,10 @@ public void handle() { if (statusMessage != null) { this.getLogger().info(statusMessage); } - } catch (Exception ex) { + } catch (Throwable throwable) { status = StatusResult.Status.Failure; - statusMessage = ExceptionUtils.getRootCauseMessage(ex); - rpcException = RpcException.newBuilder().setMessage(statusMessage).setStackTrace(ExceptionUtils.getStackTrace(ex)).build(); + statusMessage = ExceptionUtils.getRootCauseMessage(throwable); + rpcException = RpcException.newBuilder().setMessage(statusMessage).setStackTrace(ExceptionUtils.getStackTrace(throwable)).build(); } if (this.responseStatusMarshaller != null) { StatusResult.Builder result = StatusResult.newBuilder().setStatus(status).setResult(statusMessage);