Azure / Azure/azure-functions-java-worker

Exceptions in static blocks blocks not caught/recorded

Open
#295 2 comments 0 reactions 1 assignee Assigned to @kaibocai View on GitHub
area:java-functions Bug P2 reviewed
Dominant language
Java
Stars
103
Forks
74
Avg merge
4d 8h
Merged PRs (30d)
2

Description

When an exception occurs in a static initialization, it is not logged in AppInsights.

#### Investigative information

Please provide the following:

- Timestamp: 2019-06-21T17:48:38.384
- Invocation ID: `48d86a7c24b1354196e9c0c9b6ee7d19`
- Region: Central US

#### Repro steps
Here's a sample function to reproduce:

```java
package com.yevster;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Optional;

import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;

public class ProtoFunction {
static {
//Puke!
Optional.empty().orElseThrow(()->new RuntimeException("Life isn't fair!"));
}

@FunctionName("prototype")
public HttpResponseMessage run(@HttpTrigger(name = "req", methods = {
HttpMethod.GET }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage> request,
final ExecutionContext context) throws MalformedURLException, IOException {

return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "text/html").body("

Rejoice! All is well!

").build();
}
}

```
And here's what AppInsights shows when queried for all exceptions and trace messages after invocation of that function:

[![noexceptionlogged.jpg](https://i.postimg.cc/Fsccphhv/noexceptionlogged.jpg)](https://postimg.cc/7fHfY8Ct)

#### Expected behavior

Provide a description of the expected behavior.

The exception thrown from the static block is recorded in App Insights.

#### Actual behavior

The exception thrown from the static block is **not** recorded in App Insights.

#### Known workarounds

Do not use any static code.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.