当前位置: 首页 > news >正文

嘉兴建设企业网站建设外汇网站

嘉兴建设企业网站,建设外汇网站,网站百度手机端排名怎么查询,推广神器自定义错误 Go语言中 错误使用内建的 error 类型表示#xff0c; error类型是一个接口类型#xff1a;定义如下#xff1a; error 有一个 Error() 的方法‘所有实现该接口的类型 都可以当做一个错误的类型#xff1b;Error()方法输入具体错误描述#xff0c;在打印错误时…自定义错误 Go语言中  错误使用内建的 error 类型表示 error类型是一个接口类型定义如下  error 有一个 Error() 的方法‘所有实现该接口的类型 都可以当做一个错误的类型Error()方法输入具体错误描述在打印错误时 可以调用 Error() 来输出错误 type error struct {Error() string } 对于简单的数据类型一个 println 就可以了 但是对于复杂类型 我们可以通过继承接口的方式 灵活的方式进行 例如一个计算面积的函数需要判断输入是否合法比如输入负数则报错    ▶方式1 //计算面积 //输入两个数 返回 面积和错误 func area(a, b int) (int, error) {if a 0 || b 0 {//第一种//return 0, errors.New(计算长度 不能为负数)//第二种return 0, fmt.Errorf(计算长度 不能为负数; 长度%d,宽度%d 不能小于0, a, b)//return 0, areaError{计算长度 不能为负数, a, b}}return a * b, nil }//调用a : 20 b : -56r, err : area(a, b) if err ! nil {fmt.Println(err)return } fmt.Println(area:, r)输入 计算长度 不能为负数计算长度 不能为负数; 长度20,宽度-56 不能小于0▶方式2 //定义错误结构体 type areaError struct {err string //错误描述length int //宽度width int //长度 } //实现一个接口 func (e *areaError) Error() string {//return fmt.Sprintf(length %d, width %d, e.length, e.width)return e.err }//求面积函数 func area(a, b int) (int, error) {if a 0 || b 0 {return 0, areaError{计算长度 不能为负数, a, b}}return a * b, nil }//调用 a : 20 b : -56r, err : area(a, b) //写法1 if err ! nil {if err, ok : err.(*areaError); ok {fmt.Printf(length %d or width %d is less than zero\n, err.length, err.width)fmt.Println(err)return}fmt.Println(err)return } fmt.Println(area:, r)输出 length 20 or width -56 is less than zero 计算长度 不能为负数 ▶方式3 //定义结构体和 函数 type areaError struct {err string //错误描述length int //宽度width int //长度 }func (e *areaError) Error() string {//return fmt.Sprintf(length %d, width %d, e.length, e.width)return e.err }func (e *areaError) widthNegative() bool {return e.width 0 }func (e *areaError) lengthNegative() bool {return e.length 0 }//面积函数的定义 func area(length, width int) (int, error) {err : if length 0 {err length is negative}if width 0 {err width is negative}if err ! {return 0, areaError{err: err, length: length, width: width}}return length * width, nil }//调用 a : 20 b : -56r, err : area(a, b) if err ! nil {if err, ok : err.(*areaError); ok {if err.lengthNegative() {fmt.Println(Length is error :, err.length)}if err.widthNegative() {fmt.Println(width is error :, err.width)}fmt.Printf(length:%d, width:%d\n, err.length, err.width)return}fmt.Println(err) } fmt.Println(area:, r)//输出 width is error : -56 length:20, width:-56异常 异常和错误 是两个不同的概念容易混淆 错误是指在有可能出现问题的地方出现了问题异常是指在不应该出现问题的地方出现了问题   go 中的处理异常的主要有两种 panic 会导致程序会终止在编写程序的时候 尽量使用错误 只有在程序不能继续进行下去的时候在使用  panic在发生 panic 的时候使用 recover 防止程序终止 // 会导致程序会终止在编写程序的时候 尽量使用 错误 只有在程序不能继续进行下去的时候在使用 panic, recover func myTest() {defer fmt.Println(myTest defer)panic(myTest panic) }func main() {defer fmt.Println(main defer)myTest()fmt.Println(main ...) }输出带错误码的异常中断并且程序没有执行完整 没有打印 fmt.Println(main ...)myTest defer main defer panic: myTest panicgoroutine 1 [running]: main.myTest()D:/awesomeProject/grammar/chapter08/main.go:18 0x73 main.main()D:/awesomeProject/grammar/chapter08/main.go:7 0x70Process finished with the exit code 2 recover recover 类似与其他语音 try catch 但是它只有在 相同的协程中才能 recover到异常继续执行代码 不至于奔溃 // 在发生 panic 的时候 recover 防止程序终止 // recover 类似与 try catch 只有在相同的协程中才能 recover到异常继续执行代码 不至于奔溃 func outOfArray(x int) {defer func() {if err : recover(); err ! nil {fmt.Println(err)}}()var array [5]intarray[x] 1 }func main() {outOfArray(6)fmt.Println(main ...)}输出 带错误输出并且程序继续往下执行 (执行完整 输出 fmt.Println(main ...)runtime error: index out of range [6] with length 5 main ...Process finished with the exit code 0
http://www.hkea.cn/news/14495748/

相关文章:

  • 班级网站怎样做郑州做网站的大公司
  • 做网站怎么选择上市公司创建一个网站的项目体现项目完成速度因素的
  • 如何给网站做第三方流量监测如何做游戏试玩网站
  • php做网站搜索框上海企业网站定制
  • 网站小视频怎么做代理深圳招聘网站有哪些
  • 山东建设银行招聘网站如何查网站pv
  • 做直播网站响应式网站可以做缩放图吗
  • 为什么自己做的网站用QQ打不开涿州市住房和城乡建设局网站
  • 百度网站开发合同范本wordpress管理员与编辑可见
  • 购物网站建设优缺点那网站做问答
  • 网站建设中关村sem优化方法
  • 网站开发也需要源码吗免费网站建设自助建站
  • 网站策划的工作职责潍坊市住房和城乡建设网站
  • 招聘网官方网站莱州 网站制作
  • 黄岛开发区做网站网络公司无锡建设局网站
  • pc端网站布局it运维需要具备哪些能力
  • 三水区建设局网站wordpress opendir
  • 阿里营销网站建设wordpress 新浪微博登入
  • 如何做网站文件辽宁省建设工程信息网站
  • 西安凤城二路网站建设九星市场做网站
  • 建设工程质量检测机构主管网站网站群管理
  • 有个人代做网站的吗个人网页设计实验报告
  • 那些网站可以做信息推广服务器在哪里
  • 外贸公司的网站建设模板网络推广公司司
  • 重庆神态网站建设推荐好用的分销平台
  • 如何通过国外社交网站做外销流媒体网站开发教程
  • 个人主页网站设计代码如何做平台软件
  • 广州 网站备案深圳官网建站服务商
  • 珠海市建设工程质量监督检测站网站小红书推广营销
  • 郑州网站制作选择乐云seo天津滨海新区小程序网站建设