GO语言异常处理机制panic和recover分析

2024-04-29 16:18

本文主要是介绍GO语言异常处理机制panic和recover分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

package main

import (
 "log"
 "strconv"
)

//捕获因未知输入导致的程序异常
func catch(nums ...int) int {
 defer func() {
  if r := recover(); r != nil {
   log.Println("[E]", r)
  }
 }()

 return nums[1] * nums[2] * nums[3] //index out of range
}

//主动抛出 panic,不推荐使用,可能会导致性能问题
func toFloat64(num string) (float64, error) {
 defer func() {
  if r := recover(); r != nil {
   log.Println("[W]", r)
  }
 }()

 if num == "" {
  panic("param is null") //主动抛出 panic
 }

 return strconv.ParseFloat(num, 10)
}

func main() {
 catch(2, 8)
 toFloat64("")
}

这篇关于GO语言异常处理机制panic和recover分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946564

相关文章

用 Python 分析中国大学分布,终于知道为什么好大学难上了

这是「进击的Coder」的第 448 篇技术分享 作者:周萝卜 来源:萝卜大杂烩 “ 阅读本文大概需要 4 分钟。 ” 大家好,今天重点从高等学府的分布情况来分析,不同省份考取名牌大学的难易程度。 都说高考其实是相对公平的选拔,那么今天我们就用数据来说话,看看全国的教育资源,高校分布到底是怎样,哪里的小伙伴相对来说,更容易踏入大学的校门呢。 数据还是来自于高考网,网站比较简单,获取数据相对容易

网络故障快速定位的秘诀 - 基于 AnaTraf 全流量回溯分析

网络故障是每个 IT 从业者都深有体会的头疼问题。当网络出现异常时,如何快速定位故障原因,恢复网络正常运行,是考验运维能力的关键所在。借助 AnaTraf 网络流量分析仪的全流量回溯分析功能,您可以轻松应对各种复杂的网络问题,实现快速故障定位。 1. 网络故障分析的痛点 网络故障定位通常是一个复杂的过程。首先需要收集大量的网络日志和监控数据,逐一分析排查。但这些信息往往分散在不同的系统中,缺乏

C语言中运算符优先级记忆方法

C语言中有很多运算符,它们之间有优先级关系,但是原来苦于优先级关系太多,根本记不住,所以编程时只能不断的用括号来组合代码~   今天找到了一个口诀,在这里记下来,方便以后查阅 圆方括号、箭头一句号,  自增自减非反负、针强地址长度, 乘除, 加减, 再移位, 小等大等、等等不等, 八位与, 七位异, 六位或,

关于c语言中的return问题

最近看32的代码比较多,发现一个小小的细节有点疑问。 原来我们学习c语言时对于返回值,如果要返回0,那么语句就是return 0;如果返回1,那么语句就为return 1; 但是在32代码里面我看见了return (0);还有return(1);他们有差别么????????? 今天在数据结构中也看见了类似的问题,决定来验证一下 测试代码如下: #include<stdio.h>int f

Spring 管理下的web项目,对Properties文件重要参数的加密解密处理

javaWeb项目中往往我们会把jdbc/redis等的属性配置放在properties文件中,但是又不想让非开发人员看到某些重要配置信息,所以需要对这样类似与用户名、密码等的字段进行加密,但是Spring管理项目启动时候只去读取,所以必须继承PropertyPlaceholderConfigurer 类来实现读取前的解密过程 加密类 import java.io.FileInputStr

Kafka异常处理(消费者不消费数据)

问题 生产问题,OffsetMonitor 监控发现运行了一个月的kafka突然间消费有lag.而且消费端不消费数据 分析 在客户端写try..catch…捕获异常:  2017-08-27 09:47:48,103 ERROR [com.ecar.eoc.message.platform.kafka.Kafka211Context] - [kafka_Exception———

智能优化算法 | Matlab实现成长优化算法(Growth Optimizer,GO)(内含完整源码)

智能优化算法 | Matlab实现成长优化算法(Growth Optimizer,GO)(内含完整源码) 文章目录 智能优化算法 | Matlab实现成长优化算法(Growth Optimizer,GO)(内含完整源码)文章概述源码设计 文章概述 智能优化算法 | Matlab实现成长优化算法(Growth Optimizer,GO)(内含完整源码)成长优化算法(Gr

MATLAB基础应用精讲-【数模应用】多选题分析

目录 几个高频面试题目 设计问卷及数据分析 SPSSAU多选题分析常见问题

一体化水处理设备有哪些

一体化水处理设备是一种集成了多种水处理工艺的紧凑型设备,适用于各种规模的水处理需求,包括生活污水、工业废水、饮用水处理等。这些设备通常设计为模块化,便于安装、运输和扩展。以下是一些常见的一体化水处理设备类型: 一体化生活污水处理设备: 生物接触氧化池(BCO)序批式反应器(SBR)膜生物反应器(MBR)厌氧/好氧(A/O)工艺生物滤池(BAF) 一体化工业废水处理设备: 化学混凝沉淀一体化

深入理解JVM:介绍JVM的工作原理,包括类加载机制,内存模型,垃圾回收机制等

类加载机制:         JVM的类加载机制主要包括加载、连接(验证、准备和解析)、初始化、使用和卸载五个阶段。第一个阶段是加载需求的.class文件到内存中。第二个阶段是完成对字节码的验证,为类变量分配内存并初始化为对应类型默认值。第三个阶段涉及到把类中的符号引用替换为直接引用。 ClassLoader classLoader = ClassLoader.getSystemClassLo