1、开发环境:go 1.19.1 windows/amd64
2、问题描述:执行sql.Open 无法捕获错误
3、相关代码
```
var db *sql.DB
var dbErr error
//创建数据建库连接:db为nil时创建
func CreateDbconnect() (*sql.DB,error){
if db == nil {
fmt.Println("into db == nil")
//此处。在数据库信息不对的情况下,不会执行对应逻辑。导致继续执行db.Ping,然后返回一个没用的db。真正使用该dgb时报错
if db, dbErr = sql.Open(driverName, dataSourceName); dbErr != nil {
fmt.Println("db open error")
return nil, dbErr
}
if dbErr = db.Ping(); dbErr != nil {
fmt.Println("into db == ping")
return nil, dbErr
}
fmt.Println("will out == ping")
}
fmt.Println("aiaiaiai")
return db, nil
}
```
即这段代码始终不会执行if里边的逻辑
```
//此处。在数据库信息不对的情况下,不会执行对应逻辑。导致继续执行db.Ping,然后返回一个没用的db。真正使用该dgb时报错
if db, dbErr = sql.Open(driverName, dataSourceName); dbErr != nil {
fmt.Println("db open error")
return nil, dbErr
}
```
请各位大佬帮看下此处问题出在哪儿
有疑问加站长微信联系(非本文作者)