Your #2 actually addresses most part of it.
You should initialize a property during its declaration only if you know that it does not throw exceptions. Having it in constructor will let you address it.
From a difference perspective, there's none. Sometimes choosing one over the other provides more readability.
This is a very good explanation available on Java documentation:
As you have seen, you can often provide an initial value for a field in its declaration.
This works well when the initialization value is available and the initialization can be put on one line. However, this form of initialization has limitations because of its simplicity. If initialization requires some logic (for example, error handling or a for loop to fill a complex array), simple assignment is inadequate. Instance variables can be initialized in constructors, where error handling or other logic can be used. To provide the same capability for class variables, the Java programming language includes static initialization blocks.