Typically I test the file pointer returned by the (open...) call - no point in closing a file that didn't open. It also provides a handy nook for "why didn't that file get read" error handling.
(if
(setq
file_ptr
(open "that file.txt" w)
)
(progn
; Do what you gotta here, (read-line, etc.)
(close file_ptr)
)
(progn
(alert "Hey, I can't do that!")
)
)