I've been thinking about this point as well lately. I think I understand 
(at least some of) the conditions under which
you would call a panic(), but I still don't quite grok why it's better than 
returning an error if that error is properly 
handled.  If I panic(), then no defer() statements will be called, and I 
don't give any chance to the calling code to cleanup etc. 

I struggle to think of a scenario where it would be better to *not* allow 
the code to cleanup and exit gracefully. Is it because we
don't want to give the code the possiiblity of ignoring the error?

On Saturday, 30 September 2023 at 9:10:09 pm UTC+10 Kamil Ziemian wrote:

> Thank you mister Rader, this was what I needed. I think I now have 
> intuition what this text want to say.
>
> Best regards
> Kamil
>
> piątek, 29 września 2023 o 23:58:39 UTC+2 Kurtis Rader napisał(a):
>
>> An ordinary error is one that can be expected to occur. For example, 
>> opening a file may fail because the file does not exist or the process 
>> doesn't have permission to open it. An exceptional error is one that is not 
>> expected to occur and often indicates the state of the program is invalid. 
>> For example, a data structure that contains pointers that should never be 
>> nil. If a nil pointer is found that means the structure is corrupted. 
>> Probably due to a programming bug. Exceptional errors are those which may 
>> make it unsafe to continue execution. In which case calling panic() may be 
>> the only sensible course of action.
>>
>> On Fri, Sep 29, 2023 at 2:38 PM Kamil Ziemian <kziem...@gmail.com> wrote:
>>
>>> Hello,
>>>
>>> In Go FAQ we read "We believe that coupling exceptions to a control 
>>> structure, as in the try-catch-finally idiom, results in convoluted 
>>> code. It also tends to encourage programmers to label too many ordinary 
>>> errors, such as failing to open a file, as exceptional.", " Go also has a 
>>> couple of built-in functions to signal and recover from truly exceptional 
>>> conditions.".
>>>
>>> Can you explain to me in general terms what is a ordinary and 
>>> exceptional error? I'm just a hobbist programer and I never think about 
>>> errors in that way.
>>>
>>> Best regards,
>>> Kamil
>>>
>>> -- 
>>> 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...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/e9fdeb9d-e3b6-49ea-b7e3-5ab7ddafea7bn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/e9fdeb9d-e3b6-49ea-b7e3-5ab7ddafea7bn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> -- 
>> Kurtis Rader
>> Caretaker of the exceptional canines Junior and Hank
>>
>

-- 
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/7a17fcf5-480b-44c8-89b4-2a44b1f71c2en%40googlegroups.com.

Reply via email to