首页 > 代码库 > Java异常处理
Java异常处理
五个关键字 和两个结构
两个结构:
1.Throwable
Error 表示错误
Exception 异常
2.Exception
RuntimeException(包括其子类)
非RuntimeException(Checked异常)
5个关键字:
try, catch, finally, throws , throw
处理异常的结构:
package day5;
import java.util.Scanner;
public class TestException {
private static Scanner scanner;
public static void main(String[] args) {
scanner = new Scanner(System.in);
String num1=scanner.next();
String num2=scanner.next();
try
{
//System.out.println(num1/num2);
int nu1=Integer.parseInt(num1);
int nu2=Integer.parseInt(num2);
System.out.println(nu1/nu2);
}catch(ArithmeticException e)
{
//e.printStackTrace();
System.out.println("出书不能为零,请重新输入!");
}
catch(NumberFormatException ee)
{
System.out.println("必须输入数值型字符");
}
catch(Exception eee)
{
System.out.println("出现其他异常");
}
finally
{
System.out.println("资源已释放");
}
}
}
异常的分类:
1. RuntimeException(包括其子类)
特点: 编译时不检查,在运行期才去检查
2. 非RuntimeException(Checked异常)
特点: 编译时就会检查,
处理方式:
1. 在该代码所在方法上 声明跑出异常 throws
2. 把该代码try{ // here //}catch(Exception e){}
在方法上 声明抛出异常:
方法后的圆括号后面 throws 异常类A,异常类B
表明该方法不处理A,B异常,而是交给该方法的调用者去处理;
JVM默认的处理方式:
Throwable:
void printStackTrace();//获取异常信息和 异常类型 异常的位置
System.out.println(printStackTrace());//ERROR
String getMessage();//得到的异常信息
String toString(); //获取异常信息和 异常类型
throw:
throw 异常对象;
若 throw 抛出的是 runtime异常: 所在的方法上不需要声明抛出
若 throw 抛出的是 非runtime异常: 所在的方法上必须声明抛出异常;
注意:
方法复写:
原则: 一同两小一大:
一同:方法签名相同
两小:
1. 子类方法返回的类型可是父类方法返回类型的子类或相同类
2. 子类不能抛出新的异常,子类不能抛出更多的异常;(有特殊的)
一大: 子类方法的访问修饰符大于等于父类方法的访问修饰符
finally:
特点: 最终都会执行的语句块
特殊情况: 退出JVM, System.exit(1);//系统退出
自定义异常:
新建一个类继承与 Exception或 其子类
提供一个无参构造方法和一个带一个String参数的构造方法
实际开发中,更加喜欢使用 RuntimeException