Azure / Azure/azure-functions-java-worker
Exceptions in static blocks blocks not caught/recorded
- 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:
[](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
Assessment
This issue has not been assessed yet.