attention:
编译时异常必须处理
对于运行时异常,如果没有处理,默认为throws的处理方式
子类重写父类方法时异常的规定:所抛出的类型要么和父类抛出异常类型一致,要么为父类异常类型的子类型
try-catch和throws二选一即可
自定义异常
```java
public class Test {
public static void main(String[] args) {
int age=20;
if(!(age<10)){
throw new AgeException("年龄错误");
}
}
}
//一般自定义异常继承RuntimeException,好处是可以使用其处理机制
class AgeException extends RuntimeException{
public AgeException(String message){
super(message);
}
}
作业:两数相除,处理异常
//要求:接受命令行的两个参数(整数),计算两数相除,要求使用方法cal(int n1,int n2)
//对格式不正确(NumberFormatException),缺少命令行参数(ArrayIndexOutOfBoundsException),
// 除0进行异常处理(ArithmeticException)
public class Test {
public static void main(String[] args) {
try {
//验证参数是否为两个
if(args.length!=2){
throw new ArrayIndexOutOfBoundsException("参数个数不对");
}
int n1=Integer.parseInt(args[0]);
int n2=Integer.parseInt(args[1]);
double res=cal(n1,n2);
System.out.println("结果为"+res);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());
} catch (NumberFormatException e){
System.out.println("格式错误");
} catch (ArithmeticException e){
System.out.println("除数不能为0");
}
//先把接收到的字符串转为整数
}
public static double cal(int n1,int n2){
return n1/n2;
}
}
验证:参数 20,10:
参数 10,0 :
参数 10,qww: