Java学习之路-异常处理

1,120 阅读2分钟

说起异常emmm,其实刚开始学习的时候,笔者基本是向上抛。到后面,大部分习惯操作都是捕获处理。

1、理解异常

程序在运行过程中出现的问题称为异常(Exception),在JAVA语言中,SUN设计了异常处理的基本结构; JAVA的异常分为:一个为Error(不需要程序员处理的),一个为Exception(默认); Throwable类为异常的基类

Throwable

​ --- Error

​ ---- Exception

2、Exception

需要程序员处理的,如果此类异常被捕获,程序在运行时是不会崩溃的,如果没有捕获(不做异常处理),可能导致整个程序运行崩溃;

Exception异常分为2类:运行时异常(正常编译,但程序运行时出的问题;又称为非检查异常),非运行时异常(检查异常,此异常是在编写代码时就会以红色波浪线提示,此处需要做异常处理,检查异常主要出现在IO流操作)

运行时异常(RuntimeException)

常见的运行时异常:

java.lang.ArrayIndexOutOfBoundsException:数组的下标越界异常

java.lang.ArithmeticException :数学运算异常

java.lang.NullPointerException:空指针异常

java.lang.ClassCastException:类型转换异常

java.lang.NumberFormatException :数字格式化异常

java.util.InputMismatchException :输出信息类型不匹配异常

检查异常(CheckException):

IOException | java.io.FileNotFoundException(文件找不到异常 )

所有声明式异常都是检查异常,在编码时,就需要处理,否则语法出错

声明式异常:方法后根据throws 异常类型都是声明式异常

3、JAVA异常处理

java语言中异常处理的3种结构

try/catch
catch语句可以多个,但如果是Exception类型来捕获,必须为最后一个catch
try/catch/finally
finally是异常处理最后一个语句块,可加,可不加,不管异常有没有发生,此语句块都会执行,finally语句块一般做的操作为资源释放(关闭流,关闭数据库连接等)
try/finally

4、throw与throws

throw: 手动抛出异常 (人为的 --- 就是让程序运行到此处挂掉)

语法:throw 异常对象

throw new Exception("异常信息...........");

Throws:声明异常 (在定义方法时,同时给方法声明一个异常)

public void insert(int i Object data) throws Exception{
      if(i < 0 || i > this.size ){
      	throw new Exception("下标不合法");
      }

}

所有声明式异常是属于异常分类中的检查异常

throw 与 throws区别 :

throw手动抛出异常,语法为:throw 异常对象;throws为声明式异常,在定时时,在方法的后面通过throws 指定异常类型(public void method() throws Exception{ //.............})

5、自定义异常

自定义异常:自己写一个异常类型,处理特定异常问题(JDK找不到某一个异常能匹配此问题);自定义异常必须纳入JDK设计的异常体系中;

自定义异常需要继承Throwsable类或者Exception类(通常继承此类)

public class UserException extends Exception{
	public UserException(String messgae) {
		super(messgae);
	}
}