一般不负责任的异常处理,只要在方法前通过 throws甩锅给 Exception就能处理大部分异常。
但是,在很多自定义的代码中,往往JAVA范畴内的正常现象在代码中都是异常,比如写一个统分程序输入负分。
这时,需要我们自定义写异常程序了。
/*
自定义异常:
对于自定义程序出现的特有问题,JAVA并没有给出对应的描述
这时需要我们进行自我处理
定义的方式:
1、定义一个类,再对问题进行描述
2、必须要让这个类继承异常类,具备可抛性
自我处理最关键的是能够知道在系统中自带的异常类的处理中有什么方法
如果不知道,可以自我定义,自我返回
*/
细节:
1、定义功能,因为内部因为传入的参数问题,导致了功能会出现问题,这时为了解决
这个问题,通常,我们都会讲问题通过throws声明在这个函数上。
目的:为了让使用者再使用这个功能的时候,能明确处理方式,也就是说throw抛出
的目的是为了让使用者处理这个问题
2、一个功能抛出多个异常
那么在调用该功能时,需要有多个catch进行每一个异常的针对性处理
如果多个catch中有父类异常,一定要定义在最下面。否则编译失败
3、特殊部分
函数内抛出异常,函数上一定要标识,用throws声明,否则编译失败
可以声明,也可以用try catch捕捉
自定义异常的实质就是通过类处理异常!
class FuShuException extends Exception{ //自己写异常类
private int num;
FuShuException()
{
super();
}
FuShuException(int num) //返回类的信息
{
//super(message);
this.num = num;
}
public int getNum()
{
return num;
}
}
class Test{
int Div(int a,int b) throws FuShuException { //throws非常重要,一定要写
if( b==0 )
throw new ArithmeticException("除数非法!");
else if(b < 0)
throw new FuShuException(b);
else
return a/b;
}
}
public class Main{
public static void main(String[] args) {
int x;
Test test = new Test();
try {
x = test.Div(4, -1);
System.out.println("x = " + x );
} catch (ArithmeticException e) {
// TODO: handle exception
//System.out.println(e.getNum());
e.printStackTrace();
}
catch (FuShuException e) {
// TODO: handle exception
System.out.println(e.getNum());
e.printStackTrace();
}
}
}
扫描二维码关注公众号,回复:
2752931 查看本文章