stream) !== 'stream') { return; } try { set_error_handler(StreamException::handleError(...)); $success = fclose($this->stream); } finally { restore_error_handler(); } assert($success); } public function __destruct() { if (get_resource_type($this->stream) === 'stream') { fclose($this->stream); } } }