I meant, did you test it with a bad path, and with the defer before the error check? I believe you implied that this didn't result in a failure. It would have happened on exit from the method, if anything.
On Thu, Nov 25, 2021 at 12:49 PM Roland Müller <rol...@gmail.com> wrote: > Yes. Actually I only tested with a non-existing file. > > But if you mean that case were also the directory is missing: behavior is > still the same. > > BR, > Roland > > func main() { > f, err := os.Open("/tmp/dat_is_net_do/dat") > //defer f.Close() > fmt.Printf("%v\n", f) > if err != nil { > fmt.Println("NO FILE") > //return > } > defer f.Close() > fmt.Println("END") > } > > > Am Do., 25. Nov. 2021 um 21:43 Uhr schrieb David Karr < > davidmichaelk...@gmail.com>: > >> And did you test that with a file path that would fail? >> >> On Thu, Nov 25, 2021, 11:40 Roland Müller <rol...@gmail.com> wrote: >> >>> Hello, >>> >>> actually trying this with os.Open() the program behaves the same >>> regardless whether the defer is before or after the error handling, Thus, >>> no panic :-) >>> >>> Isn't anything declared with defer always running after the user code in >>> the given func ends? I am too tired now to look this up. >>> >>> BR, >>> >>> Roland >>> >>> package main >>> >>> import ( >>> "fmt" >>> "os" >>> ) >>> >>> func main() { >>> f, err := os.Open("/tmp/dat") >>> //defer f.Close() >>> fmt.Printf("%v\n", f) >>> if err != nil { >>> fmt.Println("NO FILE") >>> //return >>> } >>> defer f.Close() >>> fmt.Println("END") >>> } >>> >>> Output: >>> <nil> >>> NO FILE >>> END >>> >>> >>> On 11/25/21 10:19, Fannie Zhang wrote: >>> >>> OK, I see. Thank you. >>> >>> >>> >>> *From:* Kurtis Rader <kra...@skepticism.us> <kra...@skepticism.us> >>> *Sent:* Thursday, November 25, 2021 10:26 AM >>> *To:* Fannie Zhang <fannie.zh...@arm.com> <fannie.zh...@arm.com> >>> *Cc:* golang-nuts <golang-nuts@googlegroups.com> >>> <golang-nuts@googlegroups.com> >>> *Subject:* Re: [go-nuts] some incorrect code in blog. >>> >>> >>> >>> Notice the date of that blog article: 2010-08-04. It's more than eleven >>> years old. Blog articles are not updated as the language changes. However, >>> in this case the example in that article is correct. If `os.Open()` returns >>> an error then the `src` return value is invalid. >>> >>> >>> >>> On Wed, Nov 24, 2021 at 6:14 PM Fannie Zhang <fannie.zh...@arm.com> >>> wrote: >>> >>> Hi all, >>> >>> >>> >>> There is some incorrect code in >>> https://go.dev/blog/defer-panic-and-recover blog. >>> >>> >>> >>> The original code is >>> >>> *func CopyFile() {* >>> >>> * ...* >>> >>> * if err != nil {* >>> >>> * return* >>> >>> * }* >>> >>> * defer src.Close()* >>> >>> * ...* >>> >>> *}* >>> >>> >>> >>> I think the correct code should be >>> >>> *func CopyFile() {* >>> >>> * ...* >>> >>> * defer src.Close()* >>> >>> * if err != nil {* >>> >>> * return* >>> >>> * }* >>> >>> * ...* >>> >>> *}* >>> >>> >>> >>> I do not know how to modify the go blog, can anyone help? Thank you. >>> >>> >>> >>> Best regards, >>> >>> Fannie Zhang >>> >>> -- >>> 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/726e95ed-9b14-46a5-bb09-7821616f4ff9n%40googlegroups.com >>> <https://groups.google.com/d/msgid/golang-nuts/726e95ed-9b14-46a5-bb09-7821616f4ff9n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> >>> >>> >>> -- >>> >>> Kurtis Rader >>> >>> Caretaker of the exceptional canines Junior and Hank >>> IMPORTANT NOTICE: The contents of this email and any attachments are >>> confidential and may also be privileged. If you are not the intended >>> recipient, please notify the sender immediately and do not disclose the >>> contents to any other person, use it for any purpose, or store or copy the >>> information in any medium. Thank you. -- >>> 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/PAXPR08MB6640963981E13AC180B4E19594629%40PAXPR08MB6640.eurprd08.prod.outlook.com >>> <https://groups.google.com/d/msgid/golang-nuts/PAXPR08MB6640963981E13AC180B4E19594629%40PAXPR08MB6640.eurprd08.prod.outlook.com?utm_medium=email&utm_source=footer> >>> . >>> >>> -- >>> 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/4d0b379f-c2a0-a314-e2d3-5fec36528845%40gmail.com >>> <https://groups.google.com/d/msgid/golang-nuts/4d0b379f-c2a0-a314-e2d3-5fec36528845%40gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- 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/CAA5t8VqxeS0PtubdToXm1jT2rtAVC86rMD2YWZtcdxyz9L2Kng%40mail.gmail.com.