gpt4 book ai didi

go - 为什么 Go 的 bufio 在后台使用 panic?

转载 作者:IT王子 更新时间:2023-10-29 01:02:09 25 4
gpt4 key购买 nike

bufio 包中读取代码我已经 found这样的事情:

// fill reads a new chunk into the buffer.
func (b *Reader) fill() {
...
if b.w >= len(b.buf) {
panic("bufio: tried to fill full buffer")
}
...
}

同时有效围棋 section关于 panic 包含下一段:

This is only an example but real library functions should avoid panic. If the problem can be masked or worked around, it's always better to let things continue to run rather than taking down the whole program.

所以,我想知道,特定缓冲读取器的问题是否如此重要以导致标准库代码中的 panic 调用?

最佳答案

这可能有问题,但请考虑:fill 是私有(private)方法,b.wb.buf 是私有(private)字段。如果导致 panic 的条件永远为真,那是由于 bufio 的实现中的逻辑错误。由于一开始就不可能真正进入该状态(“不可能发生”的情况),我们真的不知道如何我们到达那里,也不清楚有多少在检测到问题之前其他状态已损坏,以及用户可以采取什么措施(如果有的话)。在那种情况下, panic 似乎是合理的。

关于go - 为什么 Go 的 bufio 在后台使用 panic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com