I’m learning Perl, and in a lot of the examples I see errors are handled like this
open FILE, "file.txt" or die $!;
Is die in the middle of a script really the best way to deal with an error?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Whether
dieis appropriate in the middle of the script really depends on what you’re doing. If it’s only tens of lines, then it’s fine. A small tool with a couple hundred lines, then consider confess (see below). If it’s a large object-oriented system with lots of classes and interconnected code, then maybe an exception object would be better.confess in the Carp package:
Often the bug that led to the die isn’t on the line that die reports.
Replacing die with confess (see Carp package) will give the stack trace (how we got to this line) which greatly aids in debugging.
For handling exceptions from Perl builtins, I like to use autodie. It catches failures from
openand other system calls and will throw exceptions for you, without having to do theor diebit. These exceptions can be caught with aeval { }, or better yet, by using Try::Tiny.