An example is nil map access or concurrent map access both cause panics in 
the runtime 
(https://github.com/golang/go/blob/release-branch.go1.10/src/runtime/hashmap.go#L357).

A useful thing panic without recover does is print the stack trace.

Matt

On Saturday, May 19, 2018 at 11:57:33 AM UTC-5, David Skinner wrote:
>
> https://play.golang.org/p/d_fQWzXnlAm
>
> If you are going to use panic, then choose a place where you can recover 
> gracefully and report the error.
>
> I do agree, that it is an mistake to return an error code if your 
> assignment was to write a function that only has valid input. The software 
> engineer giving you the assignment may be doing data validation else where 
> and is wrapping a higher level function with a defer to deal with errors. 
> If you are working on a team, it is best to produce what is expected, not 
> something better.
>
> On Fri, May 18, 2018 at 7:33 PM <matthe...@gmail.com <javascript:>> wrote:
>
>> I may have misunderstood the question. I follow the idea of panic when 
>> the program is in an invalid state.
>>
>> If Divide can receive any input then this is probably a better API:
>>
>> func Divide(a, b float64) (float64, error) {
>>
>> where you would return an ErrDivideByZero made with errors.New as a 
>> global exported var instead of panicking.
>>
>> But if Divide can only receive valid input then that assert seems 
>> appropriate to me.
>>
>> Matt
>>
>> On Monday, May 14, 2018 at 7:38:32 PM UTC-5, Tristan Muntsinger wrote:
>>>
>>> Is it reasonable to use a function like "Assert" below to do validation 
>>> checking in Go?  If not, why not?
>>>
>>> func Assert(t bool, msg string) {
>>> if !t {
>>> debug.SetTraceback("all")
>>> debug.PrintStack()
>>> log.Fatal("Assertion failed: " + msg)
>>> }
>>> }
>>>
>>> func Divide(a float64, b float64) float64 {
>>> Assert(b != 0, "divide by 0")
>>> return a / b
>>> }
>>>
>>> func main() {
>>> fmt.Println(Divide(10, 5))
>>> }
>>>
>>> Thanks,
>>> -Tristan
>>>
>>> -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "golang-nuts" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/golang-nuts/viuz4JTVelE/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> golang-nuts...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to