10,golang 错误处理,panic终止程序执行慎用

摘要:
packagemainimportTypeerrorinterface{Error()string}/*golang中的错误处理。golang中的错误是一种类型。默认情况下,如果没有发生错误,则返回的错误值为nilfer=nil{somethingwenterror}golang的错误类型错误可以像其他函数一样在函数之间传递。恐慌使golang程序立即停止执行。小心使用。除非在极端情况下,否则程序将导致许多问题或发生无法解决的错误ifer=Nil{panic}golang语言不支持try-catch--finally控制结构*/funcmain(){varfile[]bytevarrerrorfile,err=ioutil.ReadFileferr!=Nil{fmt.Printlnfmt.PrintInreturn}fmt Println//从文件中读取的字符串是字节类型的数组[]。您需要将字符串转换为文本err1:=errors。Newiferr1=Nil{fmt.Println}panic//panic会导致程序立即停止执行。使用name,role:=“RichardJupp”,“Drummer”err2:=fmt。错误fifer2!
package main

import (
"errors"
"fmt"
"io/ioutil"
)

type error interface{
Error() string
}

/*
golang中错误处理,在golang中错误是一种类型,默认如果没有发生错误,返回的错误值讲为nil
if err !=nil{
something went wrong
}
golang 的错误类型error 可以像其他一样在函数之间传递错误
panic 让golang程序马上停止执行,慎用。除非极端情况程序将带来很多问题或者发生了无法处理的错误

if err!=nil{
panic(err)
}
golang 语言不支持 try --catch--finally控制结构
*/

func main(){
var file []byte
var err error
file,err =ioutil.ReadFile("foo.txt")
if err!=nil{
fmt.Println("111")
fmt.Println(err)
return
}
fmt.Println(string(file)) //文件中读出来的字符串是一个byte类型的数组 []byte,需要string转换成文字

err1 :=errors.New("Something went wrong")
if err1 !=nil{
fmt.Println(err1)
}
panic("oh no ican do no more.Goodby") //panic可以导致程序立即停止执行,慎用

name,role:="Richard Jupp","Drummer"
err2:=fmt.Errorf("The %v ,%vquit",role,name)
if err2!=nil{
fmt.Println(err2)
}


}

func Half(numberToHalf int)(int,error){
if numberToHalf%2 !=0 {
return -1, fmt.Errorf("Cannot half %v", numberToHalf)
}
return numberToHalf/2,nil
}

免责声明:文章转载自《10,golang 错误处理,panic终止程序执行慎用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java后台解决跨域问题Python使用Redis下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

godror基于ODPI-C的 oracle golang 驱动使用

godror 是一个很不错的oracle golang 驱动,基于ODPI-C 编写,好处是我们需要需要依赖编译 我们只需要安装oracle client 就可以了,不像go-oci8需要编译,同时目前也有一个纯golang 的 oracle驱动,但是目前还不是很稳定,以下是godror的参考使用 参考代码 package main ​ import (...

Golang 的 go mod 管理包

go 1.14.4 初始化项目 mod管理包   go mod init example    可能会报如下错误:  go mod init: modules disabled by GO111MODULE=off; see 'go help modules'   解决   set GO111MODULE=on //window 得用管理员才能更改  ...

用Golang手写一个RPC,理解RPC原理

代码结构 . ├── client.go ├── coder.go ├── coder_test.go ├── rpc_test.go ├── server.go ├── session.go └── session_test.go 代码 client.go package rpc import ( "net" "reflect" ) // rp...

golang-函数

查看生成的汇编代码go tool compile -S xx.go //编译器对汇编代码进行优化 go tool compile -S -N -l xx.go      //不优化 注:如果编译时不使用 -N -l 参数,编译器会对汇编代码进行优化,编译结果会有较大差别 c语言汇编分析 // ch04/my_function.cint my_functio...

Golang协程与通道整理

协程goroutine 不由OS调度,而是用户层自行释放CPU,从而在执行体之间切换。Go在底层进行协助实现 涉及系统调用的地方由Go标准库协助释放CPU 总之,不通过OS进行切换,自行切换,系统运行开支大大降低 通道channel 并发编程的关键在于执行体之间的通信,go通过通过channel进行通信 channel可以认为类似其他OS体系中的消息队列,...

Golang---内存逃逸

  摘要:今天我们来了解一下 Golang 中的内存逃逸的概念。   引言:写过C/C++的同学都知道,调用著名的malloc和new函数可以在堆上分配一块内存,这块内存的使用和销毁的责任都在程序员。一不小心,就会发生内存泄露,搞得胆战心惊;切换到Golang后,基本不会担心内存泄露了。虽然也有new函数,但是使用new函数得到的内存不一定就在堆上。堆和栈...