异常:
异常是指出现了不正常的情况,大致分为两种,一种是Exception:称为异常类,他表示程序本身可以处理的问题:分为RuntimeException和非RuntimeException
其中RuntimeException:在编译期间是不检查的回来修改代码
非RuntimeException:编译期间必须处理,否则无法通过编译。
一种是Error:严重问题,程序本身无法处理的问题。
异常处理必要性:
减少用户的损失、同时也减少给用户带来的不必要的麻烦;也可以利用异常处理给与用户一些提示
JVM的默认处理方法:
如果程序出了问题但程序员没做任何处理,
①JVM会把异常的名称、位置、原因等信息输出在控制台;
②程序停止执行。
处理异常的方法:
处理异常一般有try……catch和throws两种方法,两种方法所针对的情况有所不同:
try……catch:格式如下:
try{可能出现异常代码;
}catch(异常类名 变量名)
{异常的处理代码;}
执行流程:程序从try里面的代码开始,如果出现异常,该异常对象将被提交给java运行时系统,当java运行时系统接收到异常对象时,会在catch中去匹配异常类,处理完毕后继续往下执行程序。
throws:
格式:方法括号后 +throws 异常类名
例如:public static void method() throws 异常类名
特点:仅仅是抛出异常(运行时的异常)
常见的异常类名:
异常类名 | 说明 |
ArithmeticExecption | 算数异常类 |
NullPointerException | 空指针异常 |
ClassCastException | 类型强制转换异常 |
NegativeArrayException | 数组负下标异常 |
ArrayIndexOutOfBoundsException | 数组下标越界异常 |
SecturityException | 违背安全原则异常 |
EOFException | 文件已结束异常 |
FileNotFoundException | 文件未找到异常 |
NumberFormatException | 字符串转换数字异常 |
SQLException | 操作数据库异常 |
IOException | 输入输出异常 |
NoSuchMethodException | 方法未找到异常 |
ava.lang.AbstractMethodError | 抽象方法错误异常 |
throwable:所有错误的根类
成员方法 | 说明 |
……Sting getMessage(); | 返回throwable的详细信息字符串 |
……String toString(); | 返回可抛出的简短描述 |
……void printStackTrace(); | 把异常的错误信息输出在控制台 |
编译时异常:必须显示处理,否则无法通过编译;
运行时异常:无需显示处理,也可以和编译时异常一样处理。
自定义异常:
public class 异常类名 extends Exception{
无参构造or带参构造}
例子:
public clas ScoreException extends EXception{
public ScoreException(){};
public ScoreException(String message){
super(message);}
}