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 }
  • 相关阅读:
    [Python] 登录人人网2011版
    [WPF] 自定义窗体样式
    [Python] 控制台输入密码的方法
    [Python] 字符串加密解密
    [WPF] 模仿AMD LIVE! EXPLORER界面
    [Python] Visual Studio 2008 集成 IronPython 开发环境
    mysql表类型(存储引擎)
    logstash收集nginx访问日志
    linux设置开机启动脚本
    logstash安装log4j插件
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15638372.html
Copyright © 2011-2022 走看看