异常(Exception)
异常相关概念
异常:是在运行时期发生的不正常情况。
运行时异常:可以正常编译,只有在代码运行的过程中,由于参数运算的数据导致异常。
编译时异常:编译检查时就能发现的异常,必须经过异常处理之后才能正常编译。
异常处理方式
//方式一: try-catch-finally
try {
//需要被检测异常的代码
}
catch(异常类 变量) { //该变量用于接收发生异常的对象
//处理异常代码
}
finally{
//一定会被执行的代码
}
//方式二: throws
public void method() throws XxxException{}
注:多catch,父类的catch放在最下面
自定义异常类
public class EcDef extends Exception {
static final long serialVersionUID = -33875169934229948L;
EcDef() {}
EcDef(String msg) {
super(msg);
}
}
示例
public class EcmDef {
public static void main(String[] args) {
try {
int i = Integer.parseInt(args[0]);
int j = Integer.parseInt(args[1]);
int result = ecm(i, j);
System.out.println(result);
} catch (NumberFormatException e) {
System.out.println("数据类型不一致");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("缺少命令行参数数");
} catch (ArithmeticException e) {
System.out.println("除数为0");
} catch (EcDef e) {
System.out.println(e.getMessage());
}
}
public static int ecm(int i, int j) throws EcDef {
if (i < 0 || j < 0) {
throw new EcDef("分子或分母为负数!");
}
return i / j;
}
}
拓展
1、throws 和throw的区别
-
throws使用在函数上,throw使用在函数内。
-
throws抛出的是异常类,可以抛出多个,用逗号隔开。throw抛出的是异常对象。