zoukankan      html  css  js  c++  java
  • 87_Go基础_1_55 panic and recover

     1 package main
     2 
     3 import "fmt"
     4 
     5 func myprint(s string) {
     6     fmt.Println(s)
     7 }
     8 
     9 func funA() {
    10     fmt.Println("我是一个函数funA()....")
    11 }
    12 
    13 func funB() {
    14     // 外围函数
    15     fmt.Println("我是函数funB()...")
    16     defer myprint("defer funB():1.....")
    17 
    18     for i := 1; i <= 10; i++ {
    19         fmt.Println("i:", i)
    20         if i == 5 {
    21             panic("funB函数,恐慌了") // 让程序中断
    22         }
    23     }
    24 
    25     // 当外围函数的代码中发生了运行恐慌,只有其中所有的"已经defer的函数"
    26     // 全部都执行完毕后,该运行恐慌才会真正被扩展至调用处。
    27     defer myprint("defer funB():2.....")
    28 }
    29 
    30 func main() {
    31     /*
    32         panic:词义"恐慌",
    33         recover:"恢复"
    34         go语言利用panic(),recover(),实现程序中的极特殊的异常的处理
    35             panic(),让当前的程序进入恐慌,中断程序的执行
    36             recover(),让程序恢复,必须在defer函数中执行
    37     */
    38 
    39     defer func() {
    40         if msg := recover(); msg != nil {
    41             fmt.Println(msg, "程序回复啦。。。")
    42         }
    43     }()
    44 
    45     funA()
    46     defer myprint("defer main:3.....")
    47     funB()
    48     defer myprint("defer main:4.....")
    49 
    50     fmt.Println("main..over。。。。")
    51 
    52     /*
    53         我是一个函数funA()....
    54         我是函数funB()...
    55         1
    56         2
    57         3
    58         4
    59         5
    60         defer funB():1.....
    61         defer main:3.....
    62         funB函数,恐慌了,程序回复啦。。。
    63 
    64     */
    65 }
  • 相关阅读:
    db2 load命令装载数据时定位错误出现的位置
    DB2 SQL error: SQLCODE: -668, SQLSTATE: 57016, SQLERRMC: 3
    db2重组所有表和更新表统计信息
    DB2消息
    db2 SQL查询路径
    db2备份与恢复
    博弈-题表
    【POJ1082】Calendar Game (博弈)
    【POJ1067】取石子游戏 (威佐夫博弈)
    【POJ3710】Christmas Game (博弈-树上的删边问题)
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15638372.html
Copyright © 2011-2022 走看看