Java异常处理-1-异常概述和分类

       最近一段时间换了新工作,中断了Java基础知识的学习。做一件事情,总能找出千万个理由去放弃,很难找到一个说服自己的理由去坚持下去。当前,我自己也面临很多新知识学习的任务挑战,有Groovy语言,有Jenkins的Pineline,有Git,有Docker,还有Linux,以及SQL,最后还有英语。挣扎了几天,发现Groovy语言看起来很简单,如果有Java基础,但是也只限于基本语法部分,没有实际编程脚本练习。Jenkins有一定的基本基础知识,但是pipeline算没有接触过。想一下,一天一会看jenkins,一会看Groovy,一会还看Git,到后来,发现自己什么都没有学明白。学习时间短是一个方面,还有一个方面就是,这种突击学习方法可能不适合自己。所以,适合自己的还是长期,片段地学习某一个方面。

      Java基础真的很重要,这个直接决定了Groovy脚本语言的掌握水平。其他的几个,我还是慢慢来,一个一个去系统积累学习吧。在博客新建一个文章系列,主要记录学习Java语言的异常处理,IO流和文件类操作,以及多线程,还有后面的网络编程,以及设计模式。本篇来学习异常的概述和分类。

 

1.什么是异常

简单的描述异常就是,在运行Java代码过程中出现的错误叫异常。


2.异常分类

       在Java中异常的根类叫Throwable,直接在java.lang包下,所以不需要导包。在Java JDK搜索并打开Throwable页面,可以看到有两个直接子类,分别是Error和Exception。我们接下来学习的是Exception,Error一般是指服务器宕机,数据库崩溃等严重问题。这个不是程序员能容易控制的情况。


3.Exception的继承体系

       继续在API上的Throwable页面,点击Exception这个子类,发现这个子类下有好多个异常子类。看到这里多子类,不用担心。我们只学习,运行时异常。找到并点击RunTimeExcetipn,新打开页面,我们可以找到IndexOutOfBoundsExceptionNullPointerExceptionClassCastException。这三个异常,前面都遇到过,索引越界异常,在数组部分碰到过。空指针异常,在面向对象或者平时练习就很常见。类型转换异常,在集合框架学习过程也碰到过。


4.只关注RunTimeException的学习

      看异常体系有很多个子类描述不同异常,我们只学习运行时异常,其他的异常,碰到了再去翻看API文档就好。和运行时异常对应,我们可能听说过编译时异常。一般来说,编译过程保存,这个在写代码过程中,编译器就帮我们指出来。只学习运行时异常,是因为,这种报错是程序员不小心造成的,编译可以通过,说明语法什么没有问题。下面来举例一个空指针异常代码和数组索引越界异常的代码。

1)空指针异常

package exception;

public class Demo1_Exception {

	public static void main(String[] args) {
		
		int[] arr = {11,22,33,44,55};
		
		arr = null;
		System.out.println(arr[1]);
		
	}

}

      运行之后就可以看到空指针异常的错误,这个异常很常见,只要你一直写Java代码就可以遇到这个异常,然后花时间去debug问题,找原因。根本原因就是对象没有被正确创建,就直接拿过来去调用对象的方法就出现这个问题。以后排查空指针异常就是排查对象在哪里没有被正确创建,根据这个思路去解决这类问题。

2)数组索引异常

package exception;

public class Demo1_Exception {

	public static void main(String[] args) {
		
		int[] arr = {11,22,33,44,55};
		
		System.out.println(arr[10]);
		
	}

}
       这个索引越界异常,上面最大的索引是4,但是我们想找索引为10的元素就触发索引越界异常。其实这个问题也有可能发生在,加入arr这个数组没有正确获取到,导致数组的元素个数为0,遍历数组元素就遇到索引越界异常。

猜你喜欢

转载自blog.csdn.net/u011541946/article/details/80715946