Java异常
程序中出现的任何不正常的情况。
在编写程序的时候,经常没有注意某些程序的缺少之处,或者用户的使用之中出现程序无法识别的客户输入的数据,就会随之产生异常,阻断了代码的运行,为了让程序保持通畅,加人异常处理尽可能避免程序运行中断。
Error 错误
程序运行出现了程序无法处理的问题,Java虚拟机无法解决的严重问题。
Exception
程序运行时出现不正常的情况,可以通过异常处理机制进行解决。
编程错误、访问越界
编译时异常和运行时异常
运行期异常
在程序运行时抛除的异常,所有RuntimeException的子类都
是运行期异常
● 数学异常,比如除法中,除数不能为0
● 数组下标越界
● 空指针
以下就是一种异常的运行报错
从中就可以获知那句所处位置、哪一种异常类型、异常超出多少
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 5 at com.ffyc.javaexception.Demo1.main(Demo1.java:17)
编译期异常
除去运行期的异常都是编译期异常,在写程序的时候就会出现标识,指导出错与修改。
异常处理
关键字
try
发现异常、检测不安全的代码块,有它为前提,在运行时,有任何一条代码运行发生异常,剩下代码都将不被运行。
catch
捕获异常,保证程序继续运行下去,紧跟着try去写
finally
其所包括的内容一定会执行的,只能有一个finally语句
throw
显式抛出异常,抛出的时候是抛出的是一个异常类的实例化对象。
异常类构造方法如: throw new RunTimeException();
throws
throws关键字声明,表示此方法不处理异常,而交给方法调用处进行处理。
使用了throws的方法,调用时必须处理声明的异常
基本语法
try{
可能会发生异常的代码
}
catch(异常类型 引用名){
异常处理代码
}
finally{
必须执行代码
}
//实例
try {
System.out.println(10/0);
}catch (Exception e){
System.out.println("除数不能为0");
}finally {
System.out.println("结束");
}
自定义异常
继承Exception,在提前预知异常的时候,可以构建一个自定义异常,处理其问题。
public class 异常类名 extends Exception/RuntimeException{
public 异常类名(String msg){
super(msg);
}
//以上为基本语法
public class ScoreException extends Exception{
public ScoreException() {
super();
}
public ScoreException(String message) {
super(message);
}
}
//以下是运用以上自定义异常处理遇见的非法数据
public static String trans(int socre) throws ScoreException {
if(socre<0||socre>100){
throw new ScoreException("非法分数");
}
if(socre>=90){
return "A";
}else{
return "B";
}
}