package com.java.exception;
class FushuindexException extends RuntimeException{
FushuindexException(){}
FushuindexException(String a){
super(a);
}
}
class Array{
Array(int[] arr,int index)/*throws FushuindexException*/{
if(index<0){
throw new FushuindexException("数组角标为负数了");
}
}
}
public class Throwexception {
public static void main(String[] args)/*throws FushuindexException*/{
/*int[] arr=new int[5];
new Array(arr,-1);*/
medth();
}
public static void medth(){
int[] brr=new int[4];
try{
new Array(brr,-1);
}catch(FushuindexException e){
e.printStackTrace();
}
}
}
/*
Throwable类是java语言中所有错误和异常的父类,它继承Object类。
Throwable:
子类--|Error类 表示程序中止,致命的错误,一般和硬件有关(通常不处理)
--|Exception类 异常
异常的分类:1.编译时检测的异常:既是继承Exception类的子类(不包括RuntimeException和一些特殊的子类)
需要在可能出现异常的函数上进行声明,throws,而且必须进行异常处理。
2.编译时不检测,运行时检测的异常:就是继承RuntimeException的子类,不需要进行声明的
对异常处理的两中方法:1.对可能出现异常的函数进行声明,如果出现异常则抛出异常,程序结束运行。
2.对可能出现异常的函数语句进行监控,如果出现异常则进行捕捉,由事先写好的处理语句来进行处理程序正常执行。
throws和throw的作用:1.throws是对可能出现异常的函数进行声明的
2.throw是抛出异常的
try,catch,finally的作用:1.try{//放入需要被检测异常的代码}
2.catch(//放入的是需要被检测异常的引用){//放入处理异常的方法}
3.finally{//放入的是一定要执行的代码,一般是关闭资源的入口管道代码}
多catch的情况:如果一个函数有多个异常的声明,在try{}中发现异常,多个catch(){}进行捕获时父类的Exception引用放在最后的catch中。
自定义异常:若继承Exception类表示自定义异常是编译时异常,必须进行异常处理,若继承RuntimeException表示是运行时异常,不必须进行异常处理。
通常不继承(Error类和throwable类)因为没有意义。
*/