<story><title>Eris – A better way to handle, trace, and log errors in Go</title><url>https://github.com/rotisserie/eris/tree/v0.1.0</url></story><parent_chain><item><author>awinter-py</author><text>Have spent a while in the py&amp;#x2F;js world but have switched to rust&amp;#x2F;go for part of this year -- biggest change is boilerplate relating to error handling.&lt;p&gt;Automatic stack capture for exceptions is something my language could conceivably do on my behalf.&lt;p&gt;Writing even 3 lines of code per function to propogate up the error is a huge pain, especially because it pollutes the return type -- MustWhatever() in go is &lt;i&gt;much&lt;/i&gt; easier to use than Whatever() returning (type, err)</text></item></parent_chain><comment><author>EdwardDiego</author><text>What surprises me as a primarily JVM developer now supporting Go apps and dabbling in Go development is that the logging libraries (like klog) I&amp;#x27;ve encountered don&amp;#x27;t support the level of configuration I&amp;#x27;m used to in JVM apps. I miss being able to configure individual loggers at desired levels with a logback.xml in the JAR, but especially the ability to change logging levels at runtime.&lt;p&gt;I guess it&amp;#x27;s part of the Go philosophy - more dynamic logging would most likely incur relatively higher performance costs.</text></comment>
<story><title>Eris – A better way to handle, trace, and log errors in Go</title><url>https://github.com/rotisserie/eris/tree/v0.1.0</url></story><parent_chain><item><author>awinter-py</author><text>Have spent a while in the py&amp;#x2F;js world but have switched to rust&amp;#x2F;go for part of this year -- biggest change is boilerplate relating to error handling.&lt;p&gt;Automatic stack capture for exceptions is something my language could conceivably do on my behalf.&lt;p&gt;Writing even 3 lines of code per function to propogate up the error is a huge pain, especially because it pollutes the return type -- MustWhatever() in go is &lt;i&gt;much&lt;/i&gt; easier to use than Whatever() returning (type, err)</text></item></parent_chain><comment><author>sagichmal</author><text>You&amp;#x27;re fighting the language. Unless you&amp;#x27;re writing prototypes where crashing doesn&amp;#x27;t matter, you should be writing error handling code first, and your business logic second -- so-called &amp;quot;sad path first&amp;quot; programming, c.f. &amp;quot;happy-path first&amp;quot; programming that you usually do in languages with exceptions like Python.</text></comment>