2026-01-25 15:12:59 +08:00
|
|
|
package main
|
|
|
|
|
|
2026-01-25 16:38:17 +08:00
|
|
|
import (
|
|
|
|
|
"errors"
|
|
|
|
|
"fmt"
|
|
|
|
|
"os"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var ErrFileNotFound = errors.New("file not found")
|
|
|
|
|
|
|
|
|
|
func recoverHandler() {
|
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
|
fmt.Println("Recovered from panic:", r)
|
|
|
|
|
os.Exit(1)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-25 15:12:59 +08:00
|
|
|
func main() {
|
2026-01-25 16:38:17 +08:00
|
|
|
defer recoverHandler()
|
|
|
|
|
|
|
|
|
|
// if r := recover(); r != nil {
|
|
|
|
|
// fmt.Println("Recovered from panic:", r)
|
|
|
|
|
// os.Exit(1)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 变量目录, 打印了文件名称
|
|
|
|
|
err := walkDir("./xxxx", func(filePath string) {
|
|
|
|
|
fmt.Println(filePath)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
if errors.Is(err, os.ErrNotExist) {
|
|
|
|
|
fmt.Println("not exist", err)
|
|
|
|
|
} else {
|
|
|
|
|
fmt.Printf("%s", err)
|
|
|
|
|
}
|
|
|
|
|
// os.Exit(1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// pannic
|
|
|
|
|
arrs := []int{1, 2, 3}
|
|
|
|
|
fmt.Println(arrs[4])
|
|
|
|
|
|
|
|
|
|
// if r := recover(); r != nil {
|
|
|
|
|
// fmt.Println("Recovered from panic:", r)
|
|
|
|
|
// os.Exit(1)
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 最常见的就是 遍历目录里面的文件
|
|
|
|
|
func walkDir(path string, fn func(string)) error {
|
|
|
|
|
files, err := os.ReadDir(path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return errors.Join(errors.New("walkDir error"), err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 读取path目录下的文件和子目录
|
|
|
|
|
for _, file := range files {
|
|
|
|
|
// 如果是目录, 继续往下找
|
|
|
|
|
if file.IsDir() {
|
|
|
|
|
walkDir(path+"/"+file.Name(), fn)
|
|
|
|
|
} else {
|
|
|
|
|
// 文件, 调用fn函数处理
|
|
|
|
|
fn(path + "/" + file.Name())
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-01-25 15:12:59 +08:00
|
|
|
|
2026-01-25 16:38:17 +08:00
|
|
|
return nil
|
2026-01-25 15:12:59 +08:00
|
|
|
}
|