Go 语言团队否决关于"try"语句的提案

NetFly · 2019-07-21 01:04:16

捕获异常及异常处理,是任何一种高级计算机语言都需要的一个基本机制 (跟java一点关系也没有) 如果在一个大型服务系统里,你就单单写这种 if err != nil 最后都会把你自己给绕晕

#6
更多评论

try catch一定要有的,不然满屏painc,人得疯掉! 我这个是过渡版

package main

import (
"fmt"
"github.com/haoweitech/goext/ex"
"os"
)

func main() {
  ex.Try(func() {
    _, err := os.Open("/tmp/test.txt")
    if err != nil {
      painc(err)
    }
  }).Catch(&ex.Error{}, func(err interface{}) {
    fmt.Println(err)
  }).Finally(func() {
    fmt.Println("清洁工")
  })
}
#1

错误和异常本来就是两个东西,用异常的方式处理错误,并不是好姿势 if err的方式,本就是正常的错误处理流程,习惯了try或者忽略错误处理的脚本程序员们才会觉得这种方式有问题,但是这些朋友是不是应该反思一下你们原来的姿势真的好看吗?或者自己的代码是否健壮性如何? 比如楼上兄弟的try catch方式,比if err节省代码了或者更好看了吗?至少我是完全看不出

#2