Сбой функции CheckErr (err) в golang - PullRequest
0 голосов
/ 01 марта 2019

Если я запускаю этот код, все работает нормально, и в конечном результате ничего не происходит неправильно (выводится правильный идентификатор).

stmt, err := db.Conn.Prepare("INSERT INTO tablename a VALUES (?)")
CheckErr(err)
defer stmt.Close()
res, err := stmt.Exec(&t.Id)
CheckErr(err)

id, err := res.LastInsertId()
fmt.Println(id)

Но когда я добавляю еще один CheckErr(err) в конце иЯ запускаю, получаю это:

runtime error: invalid memory address or nil pointer dereference

Это первое, что происходит в трассировке стека после паники:

id, err := res.LastInsertId()

И идентификатор не печатается, что странно, так как printlnпредшествует новому CheckErr (err)

Есть идеи, почему это происходит?Я невежественен

func CheckErr(err error) {
  if err != nil {
    raven.CaptureErrorAndWait(err, nil)
  }
}

1 Ответ

0 голосов
/ 01 марта 2019

CheckErr(err) не выходит и не возвращается, если err != nil.Программа продолжит выполнение до id, err := res.LastInsertId() и паникует, если res равно нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...