コードスニペットでループを最初に実行しているときに、例外throws.myの問題は、パニックが発生したときにループの次の繰り返しを実行する方法です。ループの次の繰り返しの実行を続けます。例外が発生したときにループを実行し続ける
package main
import (
"fmt"
)
func main() {
var arr []int = []int{5, 6, 7, 8, 9}
fmt.Println(arr)
for i := 6; i < 10; i++ {
defer func() {
fmt.Println("aaa")
if err := recover(); err != nil {
fmt.Printf("error is %v\n", err)
}
}()
arr[i] = i
}
}
1.実行は文句を言わない延期実行後のループになるの内側に回復して延期一部FUNC内のすべての作業をラップし、呼び出すことができます。2.あなたが設定する必要があります少なくともスライス 'arr'の容量として10。 –
パニックは**例外ではありません**。他の言語に慣れていたプログラマーにとっては、それを扱うのはよくある間違いですが、うまくいきません! Goでパニックが起きた場合、これは通常、(ここでやろうとしたように)パニックを「キャッチ」して「処理」するのではなく、修正する必要があるプログラミングミスを起こしたことを意味します。 – Carpetsmoker
私の質問は、パニックが発生したときにループの次の繰り返しを実行し続ける方法です、javaでcatchメカニズムを試してみてください。ループはループの次の繰り返しを実行し続けます。 – witrus