使用switch case语句,匹配不同异常实现不同处理。
package main
import (
"fmt"
"time"
)
type normalError struct {
msg string
}
func (n normalError) Error() string {
return n.msg
}
type specialError struct {
msg string
date string
detail string
}
func (s specialError) Error() string {
return s.detail
}
func count(num int) (int, error) {
if num <= 0 {
return 0, normalError{msg: "输入数字小于等于0,请重新输入!"}
} else if num > 999 {
return 0, specialError{
msg: "输入数字大于999",
date: time.Now().Format("2006-01-02 14:04:15"),
detail: fmt.Sprintf("你输入的数字为%d,大于最大值999", num),
}
} else {
return num + 1, nil
}
}
func loopCount() {
var num int
fmt.Print("请输入整数(0 < num < 999):")
// 处理输入异常
_, err := fmt.Scan(&num)
switch err.(type) {
case nil:
// 处理函数异常
result, err := count(num)
switch err := err.(type) {
case nil:
fmt.Println("没有异常")
fmt.Println("结果为:", result)
case specialError:
fmt.Println("特殊异常")
fmt.Printf("错误时间:%s,错误详情:%s\n", err.date, err.detail)
case normalError:
fmt.Println("普通异常")
fmt.Println(err.msg)
default:
fmt.Println("未知异常")
fmt.Println(err)
}
default:
fmt.Println(err)
}
}
func main() {
for {
loopCount()
}
}
输出:
请输入整数(0 < num < 999):-10
普通异常
输入数字小于等于0,请重新输入!
请输入整数(0 < num < 999):0
普通异常
输入数字小于等于0,请重新输入!
请输入整数(0 < num < 999):10
结果为: 11
请输入整数(0 < num < 999):1000
特殊异常
错误时间:2022-03-15 317:17:14,错误详情:你输入的数字为1000,大于最大值999
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏