Comments (4)
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.
@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.
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.
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)
- provide ant way to change the value of Now for testing purposes HOT 1
- I cannot pass second as 6th param for cronjob HOT 2
- Troubles in docker
- crontab run error HOT 2
- [discuss] Discussion of executing a single server under multiple nodes HOT 3
- does this package support standard crontab expr HOT 1
- Why is time zone not supported? this is exactly what i need HOT 1
- cron.New().Remove() HOT 1
- performance wise question
- During the execution process of scheduled tasks, a change in the system time can result in incorrect execution timing. HOT 2
- Tag 3.0.1 too old HOT 1
- How to start job from the past time?
- How to retrieve command
- Wrong Result on Sync Cron HOT 1
- Removing entry does not update the cron HOT 1
- cron expression failed to be parsed - unknown unit "d"
- How to schedule job to run on every 2nd thursday of month at 10:10 AM HOT 1
- Data Loss When Program Stops Running
- os time change HOT 1
- I want to run at 30 minutes per hour. Is that right HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cron.