But that highlights the value of exceptions - the non error path is very clean. 
For example when writing a file - it often doesn’t matter the reason it failed 
within the write function - could be an invalid path, illegal file name , out 
of disk space.  If the code is properly decomposed that function can’t handle 
it - so it throws - and hopefully a higher level function is able to cope (by 
handling the specific exception) - maybe asking the user for a different file 
name or a different destination device. 

And the writing function can easily cleanup any temp state due to the stack 
unwinding and AutoClosable, etc. 

> On Oct 24, 2022, at 6:18 PM, Ian Lance Taylor <i...@golang.org> wrote:
> 
> On Sun, Oct 23, 2022 at 9:31 PM 'Daniel Lepage' via golang-nuts
> <golang-nuts@googlegroups.com> wrote:
> 
> ...
> 
> 
>> 3. Streamlining shouldn't only apply to error handling that terminates the 
>> function.
>> 
>> Unlike panics, errors are values, and should be treated as such, which means 
>> that the calling function should be able to decide what to do, and this 
>> should include continuing. Frequently it won't - a lot of error handling is 
>> just return fmt.Errorf("more context %w", err) - but any proposal that 
>> assumes that it *always* won't is, IMO, confusing errors with panics. This 
>> is the question that first started this thread - I didn't understand why all 
>> the existing error proposals explicitly required that a function terminate 
>> when it encounters an error, and AFAICT the answer is "because people are 
>> used to thinking of errors more like panics than like return values".
> 
> For what it's worth, I see this differently.  The existing language is
> not going to go away, and it's pretty good at handling the cases where
> an error occurs and the function does not return.  Those cases are by
> their nature all distinct.  They are not boilerplate.  The way we
> write them today is fine: easy to read and not too hard to write.
> When people writing Go complain about error handling, what they are
> complaining about is the repetitive boilerplate, particularly "if err
> != nil { return nil, err }".  If we make any substantive changes to
> the language or standard library for better error handling, that is
> what we should address.  If we can address other cases, fine, but as
> they already work OK they should not be the focus of any substantive
> change.
> 
> 
>> Is part of the problem that the discussion around the try/check/handle/etc. 
>> proposals got so involved that nobody wants to even consider anything that 
>> looks too similar to those? Would it be more palatable if I proposed it with 
>> names that made it clearer that this is about the consolidation of error 
>> handling rather than an attempt to replace it entirely?
>> 
>> onErrors {
>>    if must Foo(must Bar(), must Baz()) > 1 {
>>      ...
>>   }
>> } on err {
>>   ...
>> }
> 
> While error handling is important, the non-error code path is more
> important.  Somebody reading a function should be able to easily and
> naturally focus on the non-error code.  That works moderately well
> today, as the style is "if err != nil { ... }" where the "..." is
> indented out of the normal flow.  It's fairly easy for the reader to
> skip over the error handling code in order to focus on the non-error
> code.  A syntactic construct such as you've written above buries the
> lede: what you see first is the error path, but in many cases you
> actually want to focus on the non-error path.
> 
> Ian
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CAOyqgcXHaQk9TfuAz-TUFCsz_-0kDKa_14f3gYER2ufHbhM73Q%40mail.gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/19573C66-1957-4F12-A2C4-F6CB9B4A5CD2%40ix.netcom.com.

Reply via email to