Skip to content

Conversation

@dabrahams
Copy link
Collaborator

No description provided.

@dabrahams dabrahams closed this Jan 28, 2026
@dabrahams dabrahams deleted the errors branch January 28, 2026 20:20
Comment on lines +14 to +19
What we present here is not the only logically consistent approach to
errors, and our approach may clash with your instincts. It is the
result of optimizing for local reasoning and the ergonomics of
scalable software development, and the justifications for our choices
are interdependent. We hope you'll bear with us as we tie them all
together.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
What we present here is not the only logically consistent approach to
errors, and our approach may clash with your instincts. It is the
result of optimizing for local reasoning and the ergonomics of
scalable software development, and the justifications for our choices
are interdependent. We hope you'll bear with us as we tie them all
together.

It goes without saying that there are other logically consistent approaches to errors and the book's focus on ergonomics of scalable software development should be covered in the introduction. I sum, I don't see much value in this paragraph.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am skeptical of its value also.

Comment on lines +44 to +53
> - **Programming Error**, or **bug**: code contains an
> avoidable[^avoidable] mistake. For example, an `if` statement
> tests the logical inverse of the correct condition.
>
> - **Runtime error**: a function could not fulfill its postconditions
> even though its preconditions were satisfied. For example,
> writing a file might fail because the filesystem is full.

[^avoidable]: While bugs in general are inevitable, every *specific*
bug is avoidable.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the "avoidable" qualification adds anything. Additionally, I fixed the tense of the examples to match

Suggested change
> - **Programming Error**, or **bug**: code contains an
> avoidable[^avoidable] mistake. For example, an `if` statement
> tests the logical inverse of the correct condition.
>
> - **Runtime error**: a function could not fulfill its postconditions
> even though its preconditions were satisfied. For example,
> writing a file might fail because the filesystem is full.
[^avoidable]: While bugs in general are inevitable, every *specific*
bug is avoidable.
> - **Programming Error**, or **bug**: code contains a
> mistake. For example, an `if` statement
> testing the logical inverse of the correct condition is a bug.
>
> - **Runtime error**: a function could not fulfill its postconditions
> even though its preconditions were satisfied. For example,
> writing a file might fail because the filesystem is full.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what I had in mind when I wrote that. It's not like me to use a term (and footnote it!) without having some meaning in mind. I think maybe I meant to say that runtime errors are not avoidable.

@camio camio mentioned this pull request Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants