[Email-SIG] fixing the current email module
Oleg Broytman
phd at phd.pp.ru
Thu Oct 8 11:18:40 CEST 2009
On Wed, Oct 07, 2009 at 10:51:03PM -0400, Barry Warsaw wrote:
> On Oct 7, 2009, at 1:07 PM, Oleg Broytman wrote:
>
>> On Wed, Oct 07, 2009 at 11:23:24AM -0500, Matthew Dixon Cowles wrote:
>>> In my opinion, the email module should never raise an exception as a
>>> result of working with a malformed message. Though it should
>>> certainly make the information that a message was malformed available
>>> for the calling program to check.
>>
>> I disagree. email package is not a user agent, and exceptions are
>> *the*
>> way to indicate there are problems.
>
> By keeping the various components clear in our mind, we can see that
> both statements are correct in a sense. The parser and generator should
> never raise exceptions. The model can and probably should.
Are you going to parse any garbage and create a Message (probably an
empty Message) with one defect "cannot parse it at all"?
>> But if a parser stumbles upon an
>> unparseable
>> block - it must raises an exception.
>
> No. It really can't. Let's say your MTA dropped a bunch of bytes in a
> file and in some low-level background process you read those bytes and
> turn them into Message trees. Now your parser throws an exception: what
> can you possibly do about it except throw away this unparseable jumble of
> bytes and log the exception?
I don't disagree with that. If a parser can parse an input in some way -
let's consider the input a malformed message and create a Message with
defects.
What I disagree with is that if a parser cannot parse input garbage at
all it must raise an exception. And if a parser can raise an exception any
calling program must be prepared to catch such exceptions.
Oleg.
--
Oleg Broytman http://phd.pp.ru/ phd at phd.pp.ru
Programmers don't die, they just GOSUB without RETURN.
More information about the Email-SIG
mailing list