Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goの格言”Errors are values”の本質を読み解く

Avatar for H.Saki H.Saki
April 23, 2024
2.6k

Goの格言”Errors are values”の本質を読み解く

24/4/23 Findy Goのエラーハンドリング 最新事情Lunch LTにて発表
https://findy.connpass.com/event/314417/

Avatar for H.Saki

H.Saki

April 23, 2024
Tweet

Transcript

  1. 自己紹介 About Me l ͖͞ )4BLJ ◦ ຊۀͰ͸"84Λओઓ৔ʹͨ͠ Ϋϥ΢υΠϯϑϥ԰͞ΜΛ͍ͯ͠·͢ ◦

    5XJUUFS!TBLJ@FOHJOFFS l աڈͷ੒Ռ෺ FUDʜ ;FOO ٕज़ॻయ ݄߸ʙ ݄߸
  2. 「プログラム可能」とは何か? meaning of the term “programmed” l ϓϩάϥϜͰ͸ɺม਺΍ఆ਺ɾܕͱ͍ͬͨࣝผࢠͰ໊લ͕ͭ͘΋ͷΛѻ͍· ͢ ◦

    (Pͷݴޠ࢓༷ॻͰ͸͜ΕΒΛQSPHSBNFOUJUZͱݺΜͰ͍·͢ ▪ *EFOUJGJFSTOBNFQSPHSBNFOUJUJFTTVDIBTWBSJBCMFTBOEUZQFT l ϓϩάϥϜՄೳͰ͋Δͱ͸ɺQSPHSBNFOUJUZͱͯ͠ѻ͏͜ͱ͕Ͱ͖Δͱಉٛ Ͱ͋Γɺ͢ͳΘͪҎԼͷಈ࡞͕Ͱ͖Δ͜ͱͰ͋Δͱࠓճ͸ఆΊ·͢ ◦ ۩ମܕ΍ΠϯλʔϑΣʔεΛ༻͍ͯදݱ͢Δ ◦ ஋Λม਺ɾఆ਺ʹόΠϯυ͢Δ
  3. 「エラーがプログラム可能」であるということ Errors can be programmed Τϥʔ͕ϓϩάϥϜՄೳͰ͋Δ͜ͱ QSPHSBNFOUJUZͱͯ͠ѻ͑Δ͜ͱ͸ɺҎ Լͷ͜ͱ͔Β֬ೝ͢Δ͜ͱ͕Ͱ͖·͢ɻ ۩ମܕ΍ΠϯλʔϑΣʔεΛ༻͍ͯදݱ͢Δ ஋Λม਺ɾఆ਺ʹόΠϯυ͢Δ

    • &SSPSΠϯλʔϑΣʔεΛຬͨ͢ߏ଄ମ Ͱ͋Ε͹ͲΜͳ۩ମܕͰ΋Τϥʔͱ͠ ͯѻ͏͜ͱ͕Մೳ • ม਺FSSʹΤϥʔΛόΠϯυͯ͠ɺͦͷ FSSʹରͯࣗ͠෼ͷ޷͖ͳΑ͏ʹॲཧΛه ड़Ͱ͖Δ • ߏ଄ମͷϑΟʔϧυʹΤϥʔϑΟʔϧυ Λఆٛ͢Δ͜ͱͰ஋ΛόΠϯυ͢Δ
  4. 「エラーがプログラム可能」であるということ Errors can be programmed Τϥʔ͕ϓϩάϥϜՄೳͰ͋Δ͜ͱ QSPHSBNFOUJUZͱͯ͠ѻ͑Δ͜ͱ͸ɺҎ Լͷ͜ͱ͔Β֬ೝ͢Δ͜ͱ͕Ͱ͖·͢ɻ ۩ମܕ΍ΠϯλʔϑΣʔεΛ༻͍ͯදݱ͢Δ ஋Λม਺ɾఆ਺ʹόΠϯυ͢Δ

    • &SSPSΠϯλʔϑΣʔεΛຬͨ͢ߏ଄ମ Ͱ͋Ε͹ͲΜͳ۩ମܕͰ΋Τϥʔͱ͠ ͯѻ͏͜ͱ͕Մೳ • ม਺FSSʹΤϥʔΛόΠϯυͯ͠ɺͦͷ FSSʹରͯࣗ͠෼ͷ޷͖ͳΑ͏ʹॲཧΛه ड़Ͱ͖Δ • ߏ଄ମͷϑΟʔϧυʹΤϥʔϑΟʔϧυ Λఆٛ͢Δ͜ͱͰ஋ΛόΠϯυ͢Δ ࠓ೔͸͜ͷྫΛͨ͘͞Μ঺հ͠·͢
  5. (余談) panicはプログラム可能ではない Panic cannot be programmed ΤϥʔͱΑ͘ൺֱͯ͠ޠΒΕΔQBOJD͸QSPHSBNFOUJUZͱ͸Έͳͤͣɺϓϩά ϥϜՄೳͰ͋Δͱ͸ݴ͑·ͤΜɻ l QBOJD͸ʮΰʔϧʔνϯΛऴྃͤͯ͞ݺͼग़͠ݩʹฦ͢ˠɾɾɾʯΛ܁Γฦ͠

    ͯίʔϧελοΫΛר͖໭͢ऴྃγʔέϯεͷ͜ͱ ◦ 5IJTUFSNJOBUJPOTFRVFODFJTDBMMFEQBOJDLJOH CVJMUJOQBDLBHFͷ HPEPDΑΓ l ͜ͷऴྃγʔέϯεͷಈ࡞Λ։ൃऀ͸ࣗ༝ʹΧελϚΠζ͢Δ͜ͱ͸Ͱ͖· ͤΜ ◦ SFDPWFSΛ࢓ࠐΜͰελοΫר͖໭ΓΛࢭΊͯɺΰʔϧʔνϯͷॲཧΛ HSBDFGVMʹऴྃͤ͞Δ͙Β͍͔͠ଧͪख͕ͳ͍ l QBOJDͱ͍͏ࣄ৅ͦͷ΋ͷΛ۩ମܕ΍ΠϯλʔϑΣʔεΛ༻͍ͯදݱ͢Δͩͱ ͔ɺม਺ɾఆ਺ʹόΠϯυ͢Δػೳ͸ͳ͍
  6. まとめ Summary l ʮΤϥʔ͸஋Ͱ͋Δʯͱ͸ɺΤϥʔ͸QSPHSBNFOUJUZͰ͋ΓҎԼͷૢ࡞͕Ͱ ͖Δͱ͍͏ҙຯ ◦ ۩ମܕ΍ΠϯλʔϑΣʔεΛ༻͍ͯදݱ͢Δ ◦ ஋Λม਺ɾఆ਺ʹόΠϯυ͢Δ l

    ஋Λม਺ɾఆ਺ʹόΠϯυͯ͠ॲཧͱ͍͏ͱɺFSSEP4PNFUIJOH ͷΑ͏ ͳίʔυΛਅͬઌʹࢥ͍ු͔΂Δํ͕ଟ͍Ͱ͕͢ɺߏ଄ମͷϑΟʔϧυʹΤ ϥʔΛೖΕΔύλʔϯ΋͋Γ·͢ l ΤϥʔϑΟʔϧυʹ஋Λอଘ͢Δɾηοτ͞Ε͍ͯΔ஋ʹΑͬͯϝιουͷ ڍಈΛม͑Δͱ͍͏Ҿ͖ग़͠͸͓͍࣋ͬͯͯଛ͸ͳ͍Ͱ͢