java - 直接从函数调用中赋值变量(没有new())会引发异常吗?

时间:2016-01-28 07:29:25

标签: java

以下代码是大型项目的一部分。

概述是我正在尝试使用Spring MVC访问数据库。我想根据请求更新字段,并发送有关数据库发回的值的响应。

代码:

@Override
@Transactional

public EmployeeResponse update(EmployeeRequest employeeRequest) {
    Employee emp = new Employee();
    UUID empId = UUID.fromString(employeeRequest.getId());
    Employee foundEmployee = employeeRepository.findOne(empId);

    if (foundEmployee != null) {
        foundEmployee.setAddress(employeeRequest.getAddress());
        // similarly set 4 fields of foundEmployee
        emp = employeeRepository.save(foundEmployee);
    }
    EmployeeResponse response = new EmployeeResponse();
    response.setAddress(emp.getAddress());
    // similarly set 4 fields of response

    return response;

}

我发现new Employee()没有foundEmployee,因为有emp。 我不确定,但我认为这会导致异常。 我是对的吗?

另外,请告诉我foundEmployeenull时应该抛出的异常。

其他信息 - 这是帮助显示的内容:

org.​springframework.​data.​repository.​CrudRepository

public T findOne(ID id)

Retrieves an entity by its id.

Parameters:
id - must not be null.

Returns:
the entity with the given id or null if none found

Throws:
IllegalArgumentException - if id is null

1 个答案:

答案 0 :(得分:8)

在第

Employee foundEmployee = employeeRepository.findOne(empId);

我们可以假设EmployeeRepository.findOne()将返回Employee的实例。这不会导致编译器错误,如果在运行时发生异常,它将在findOne()内。

关于在null foundEmployee的情况下您应该做些什么,这实际上是您必须做出的设计决定。一种选择是让方法返回null让消费者知道传入的EmployeeRequest存在严重问题。

另一种选择是创建自己的Exception,然后将其投放到null foundEmployee的情况下。

<强>更新

鉴于您需要将某些内容传递回UI,另一种选择是创建一个空的EmployeeReponse对象并返回该对象:

EmployeeResponse response = new EmployeeResponse();
response.setAddress(null);
response.setName(null);

确保您的框架可以将null值编组为用户友好的内容,例如所有字段的空字符串。