CheckErr(err)函数在Golang中崩溃

时间:2019-02-28 22:02:50

标签: go

如果我运行此代码,一切正常,最终结果似乎没有任何错误(正在打印正确的ID)。

function category_posts_per_page( $query ) {
    if ( !is_admin()
        && $query->is_category()
        && $query->is_main_query() ) {
        $query->set( 'posts_per_page', 5 );
    }
}
add_action( 'pre_get_posts', 'category_posts_per_page' );

但是当我在末尾添加另一个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,这很奇怪,因为println在新的CheckErr(err)之前

知道为什么会这样吗?我一无所知

id, err := res.LastInsertId()

1 个答案:

答案 0 :(得分:2)

CheckErr(err)不会退出或返回err != nil。该程序将继续执行到id, err := res.LastInsertId(),如果res为零,则会出现紧急情况。