Code Monkey home page Code Monkey logo

Comments (4)

lukescott avatar lukescott commented on May 30, 2024 2

I'm also willing to do this as well. Currently there is some output in the tests from these panics that I would like to clear out.

I've also noticed (when developing on the package) that in some situations the panic handler will also catch stuff like index out of range, which only occurs when the code itself is incorrect and needs to be fixed. It also ends up hiding the stack trace when this happens. I would much rather known errors be returned as an error and have incorrect code panic without recovery. Or, at the very least, when a true panic happens also include the stack trace.

from cron.

soltysh avatar soltysh commented on May 30, 2024

@robfig I'd like to fix this by reworking all methods to return errors instead of nasty log+panic+recovery flow you currently have, are you ok with me doing so? It won't happen sooner than beginning of September when I'm back from PTO.

from cron.

robfig avatar robfig commented on May 30, 2024

You mean in parser.go? I'm a little adverse to that quantity of code churn, and I believe that panic is ok to use within a package, as long as it's not exposed to callers.

Here's a reference for that: https://github.com/golang/go/wiki/PanicAndRecover
"Within a package, however, especially if there are deeply nested calls to non-exported functions, it can be useful (and improve readability) to use panic to indicate error conditions which should be translated into error for the calling function"

I'm completely fine with replacing log.Panicf with a regular panic(fmt.Sprintf()) though! Seems like a mistake that it wasn't that way to begin with.

Thank you!

from cron.

soltysh avatar soltysh commented on May 30, 2024

Personally I prefer not to use panics at all, only in the situations when utterly necessary, using error return values, instead. I've seen this pattern several times all over the internet, including go's standard library. Additionally, I was thinking about completely replacing panics with errors returned from method, I'll see how it goes when actually working with the code, though 😉

from cron.

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.