ท่าดัก error ในภาษา Go กับ C

เวลาเขียน Go แล้วเจอ

if err != nil {

}

นี้เราอาจจะคิดว่ามันน่าเบื่อ มันอาจจะคล้าย ๆ กับ try: except: เวลาเขียน Python แต่ว่า ปกติแล้ว ถ้ามี exception เกิดขึ้น Python มันจะหยุดทำงานใน flow ปกติไปเลย ยกเว้นเราจะระบุไว้ไปเป็นอย่างอื่น แต่ Go นี่ถ้าไม่ระบุอะไร เช่นบอกว่าให้ return หรือ panic มันก็จะทำงานของมันต่อไปเรื่อย ๆ

แต่พอมาดูกรณีภาษา C ที่พี่ bact ยกมาเมื่อวาน ซัดกับ iconv จาก issue นี้

iconv มัน return size_t ออกมาซึ่งจริงๆ แล้ว เป็น unsigned integer แต่ว่าถ้ามี error มันจะ return -1 ที่ถูก cast เป็น size_t แล้วออกมา เวลาจะตรวจสอบว่ามี error หรือเปล่าต้องทำแบบนี้

if (res != (size_t) -1) {
   
}

มองในแง่นี้ Go ก็ดูดีขึ้นมาทันที อาจจะเขียนเยอะไปบ้าง แต่ก็ทำอะไรชัดเจนตรงไปตรงมาดี ถึงแม้บางทีผมจะรู้สึกว่าน่าเบื่อก็ตาม

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s