Back to all reviewers

Defensive null handling

elastic/elasticsearch
Based on 4 comments
Java

Always handle null references and values defensively to prevent NullPointerExceptions and unexpected behavior. Follow these practices: 1. **Check nulls before dereferencing**: Always verify a reference is not null before accessing its methods or properties:

Null Handling Java

Reviewer Prompt

Always handle null references and values defensively to prevent NullPointerExceptions and unexpected behavior. Follow these practices:

  1. Check nulls before dereferencing: Always verify a reference is not null before accessing its methods or properties: ```java // Instead of directly accessing possibly null objects Engine engine = shard.getEngineOrNull(); assertThat(engine != null && engine.isThrottled(), equalTo(true));

// Or for parsing operations if (token == null) { token = parser.nextToken(); }


2. **Use APIs that handle nulls gracefully**: Prefer methods that allow specifying default values when parsing or converting:
```java
// Instead of Boolean.parseBoolean which doesn't handle nulls well
assertThat(Booleans.parseBoolean((String) indexSettings.get(setting.getKey()), false), matcher);
  1. Defensive coding for asynchronous operations: When objects might be deleted or changed by other threads:
    var project = clusterService.state().metadata().projects().get(projectId);
    PersistentTasksCustomMetadata.PersistentTask<?> persistentTask = 
     project == null ? null : PersistentTasksCustomMetadata.getTaskWithId(project, getPersistentTask());
    

These patterns help create more robust code that can handle edge cases and prevent crashes in production.

4
Comments Analyzed
Java
Primary Language
Null Handling
Category

Source Discussions