This way we can handle the IOException in the same place as in the java version, without throwing passing unchecked exceptions
This way we can handle the IOException in the same place as in the java version, without throwing passing unchecked exceptions