Open haonly opened 3 years ago
엘리베이터 코드
package main
import "fmt"
func main() {
var people = make([]string, 3, 3)
var name string
for {
fmt.Scanln(&name)
if name == "0" {
break
} else {
people = append(people, name)
}
}
for _, val := range people {
defer fmt.Println(val)
}
}
TITLE
CONTENTS defer와 panic()
import "fmt"
func main() { var a, b int = 10, 0 defer fmt.Println("Done")
}
panic(), recover()
defer
는 '끝내기 전에 이거는 실행하고 끝내줘'의 느낌이라면panic
은 겉으로 보기에 아무런 문제가 없는데 실행해 보니 에러가 발생해서 프로그램을 종료하는 기능즉
panic
은 문법 자체를 잘못 입력했을 때 발생하는 에러는 아니라는 것실행 중 예외가 발생했을 때
panic('message')
와 같이 사용하여 중단panic
을 발생시키고 프로그램을 종료하는 것이 안좋은 방법이 될 수 있음recover
는 자바의 catch와 같은 느낌, 즉 예외처리. panic을 복구하고 자동종료되지 않게함import "fmt"
func main() { defer func() { if r := recover(); r != nil{ fmt.Println(r)
}