java异常概述
异常
程序运行中不正常的情况
例:
- 数组越界
- 程序在运行过程中,由于用户输入的数据格式有误,读取文件,文件被强制删除或者网络传输过程中断网了,此时数据传输出现问题—>异常
- 注:异常指的并不是语法错误。语法错误时,编译不会通过,不会产生字节码文件,根本不能运行。
java中默认的异常处理机制:
当程序出现异常后,会将异常包装在一个对应的对象中,并抛出此对象。
java中把程序中可能出现的每种情况都创建了一个类,一旦出现某种类型的异常,就会抛出此类型类的对象,并终止程序。
异常处理:
- 遇到异常就终止程序运行;
- 遇到程序异常时,进行处理。
常见的异常
public class ExceptionDemo {
public static void main(String[] args) {
int[] a=new int[5];
a[5]=5;//数组索引越界ArrayIndexOutOfBoundsException
int a=10;
int b=0;
int c=a/b;//算数异常ArithmeticException
String s="abv";
s.charAt(3);//字符串索引越界StringIndexOutOfBoundsException
String s=null;
s.length();//空指针异常NullPointerException
Object s="1234";
Integer a=(Integer)s;//类型转换异常ClassCastException
Integer.parseInt("abv");//数字格式化异常NumberFormatException
System.out.println("next");
}
}
异常体系结构:
java.lang.Throwable 是java异常体系中的根类
里面有两个常用的方法:
public void printStackTrace();打印栈中的异常信息;
public String getMessage(); 获取到异常信息
有两个子类:
java.lang.Error:错误 是java程序无法处理的,例如内存不够用了。
java.lang.Exception:异常,出现的一般性问题,可以使用java中的异常处理机制进行处理。
广义异常:所有的问题均可以称为异常;
狭义的异常:只指exception。
异常处理
java中提供一套异常处理机制,在程序发生异常时,可以执行预先设定好的处理程序,执行完成后,程序会停止,可以继续向后执行。
在写代码时,就要根据不同的情况设定好处理程序。
如果程序执行时,出现问题,执行异常处理程序;
如果程序执行时,没有出现问题,不需要执行异常处理程序。
关键字
- try:执行可能产生异常的代码
注:try中的代码一旦出现异常,后面的代码则不会继续执行。
- catch():捕获出现的指定的异常对象
printStackTrace();//打印异常
-
finally:必须执行的语法,只能有一个finally语句
-
throw
-
throws