Giter VIP home page Giter VIP logo

Comments (2)

tidwall avatar tidwall commented on May 23, 2024 1

Hi Anthony,

As a rule-of-thumb; If a function returns an error, then handle the error. But there are times when I don't check an error, and it's usually one of two reasons:

  1. The function can't return an error, even though the function signature has a return value.
  2. Failure is optional and sometimes OK, and I often don't care what the error message is.

I'll explain the reason for each of lines you provided:

  • https://github.com/muyiwaolurin/buntdb/blob/master/buntdb.go#L349
    The db.Update() call occurs in a background routine and runs once every second until db.Close() is called. Even if db.Update() fails, I still want the routine to continue. An error has no relevance to the decision to stop the background routine. I may want to add logging methods in the future, at which point the error would be useful to write to the logger.
  • https://github.com/muyiwaolurin/buntdb/blob/master/buntdb.go#L83
    The error returned from the db.file.Close() call is secondary to the error that was returned by db.load(). I wanted the caller of db.Open() to know why the loading the file database file failed.
  • https://github.com/muyiwaolurin/buntdb/blob/master/buntdb.go#L1261
    The type of b is a bytes.Buffer, and bytes.Buffer.WriteString cannot return an error. Under the rare occasion that b.WriteString fails, which can only happen when the application runs out of memory, the function panics and the entire application fails.

This goes for the bufio.Writer.Write() calls too. I ignore all of the errors because an error under-the-hood is likely an out-of-memory situation and will panic the system. The only error I care about is whether or not the data was written to disk. https://github.com/muyiwaolurin/buntdb/blob/master/buntdb.go#L447

I try to handle as many errors as possible, but the truth is some of them just don't matter. I would rather not waste any CPU cycles on those.

I hope this information helps and good luck.

from buntdb.

olurin avatar olurin commented on May 23, 2024 1

Thats awesome! Thanks Josh.

from buntdb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.