# 18.6 函数

如何使用内建函数 `recover()` 终止 `panic()` 过程（参考[章节 13.3](13.3.md)）：

```go
func protect(g func()) {
    defer func() {
        log.Println("done")
        // Println executes normally even if there is a panic
        if x := recover(); x != nil {
            log.Printf("run time panic: %v", x)
        }
    }()
    log.Println("start")
    g()
}
```

## 链接

- [目录](directory.md)
- 上一节：[接口](18.5.md)
- 下一节：[文件](18.7.md)
