异常处理数组

Posted 星际迷航‖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理数组相关的知识,希望对你有一定的参考价值。

前言

这里总结的Golang 笔记只适合有点编程基础的人看,比如Java

错误处理

golang之中的错误处理与Java之中异常处理有异曲同工之妙,Java之中是try…catch…finally,go语言之中defer…panic…recover。go语言之中抛出一个painc的异常,然后在defer之中通过recover捕获这个异常,然后正常处理。

错误处理demo

func main() 
	test()


func test()  
	var i = 10
	var j = 0
	defer func()
		err := recover()
		if err != nil
			fmt.Println("err:", err)
		
	()
	res := i / j
	fmt.Println(res)

处理结果:

自定义错误处理

painc遇见问题 painc会终止程序,你没有在程序中添加任何其他措施的话,就打印painc的详细或者内容,然后程序停止运行。但是前面无论产生什么错误都不会影响到defer的执行。

painc使用

func main() 
	defer func() 
		fmt.Println("hello1")
		panic("defer panic")
		fmt.Println("hello2")
	()
	fmt.Println("hello3")
	panic("outer panic")
	fmt.Println("hello4")


从如上的结果可以看出来,这里先是打印了3,在出现panic之后程序即将终止,但是会执行defer语句块,然后打印1,最后打印panic外部,最后打印了内部的panic。

自定义错误

使用error.New() 和 panic 一起实现

func main() 
	// painc 内置函数,接收一个interface值(任何值),可以接受error类型的变量,输出错误信息,并退出程序
	err := compute(1, 2)
	if err != nil 
		panic(err)
	

	fmt.Println("正常执行")


func compute(i int, j int)(error error)  
	if i + j < 10
		return errors.New("ij的值太小了")
	
	return nil


打印出错误信息,当ij的值大于10的时候返回一个nil打印正常执行。

数组

定义

数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。Golang之中数组是一个值类型与java之中数组还是有区别,java之中是引用类型。

var 数组变量名 [元素数量]Type
数组变量名 := [...]Type元素
var 数组变量名 = [...]Type元素// 不写...就变成切片了

数组遍历

打印索引和元素

func main() 
	var arrs = [3]int 3, 2, 1
	for index, val := range arrs
		fmt.Printf("第%d个元素的值为:%d\\n", index, val)
	

仅打印元素

func main() 
	var arrs = [3]int 3, 2, 1
	for i:=0; i<len(arrs); i++ 
		fmt.Println(arrs[i])
	

数组基本数据类型

Java之中数组之中是引用类型,在传递过程之中拷贝了数组第一个元素的地址,然后对其数组做变更,数据会发生变化。从以下的代码可以看出golang数组和java数组的区别。

public class TestArray 
    public static void main(String[] args) 
        int[] arr = new int[6];
        for(int i = 0; i < arr.length; i++)
            arr[i] = i+1;
        
        System.out.println("arr[0]: " + arr[0]);
        TestArray testArray = new TestArray();
        testArray.swap(arr);
        System.out.println("arr[0]: " + arr[0]);
    

    public void swap(int[] arr)
        arr[0] = 0;
    


golang数组是基本数据类型,在进行值传递的时候,只是拷贝这个数组的值,然后修改数组,原数组中值不发生变化,是一个新的数组。

package main

import "fmt"

func main() 
	var arr [6]int
	for i:=0;i<len(arr);i++
		arr[i] = i + 1
	
	fmt.Println()
	fmt.Printf("arr[0]: %d", arr[0])
	swap(arr)
	fmt.Println()
	fmt.Printf("arr[0]: %d", arr[0])


func swap(arr [6]int)  
	arr[0] = 0


从如上结果可以看出索引为0这个位置元素的值未发生变化。但是如果想要修改数组的话可以根据指针进行修改。

数组内存布局

golang一般会在栈区开辟一段连续的空间为数组的空间。

如果文章内容有错误,还请大佬们指导,防止误人子弟。继续冲冲冲!

以上是关于异常处理数组的主要内容,如果未能解决你的问题,请参考以下文章

java-异常处理1

Java异常

Java之今天的异常处理了吗

04-异常处理

java中的异常处理的基本结构

数据预处理