异常模块
1、Error和Exception
简单分类
1、检查xing异常
2、运行时异常
3、错误
2、异常体系结构
从逻辑角度避免
空指针异常:null
public static void main(String[] args) {
int a=1;
int b=0;
//假设要捕获多个异常,注意从小到大
try{
System.out.println(a/b);
}catch(ArithmeticException e){//捕获异常 想要捕获的异常类型
//Throwable
System.out.println("程序出现异常,b不能为0");
}catch(Error e){
}catch(Throwable t){
}
finally {//善后
System.out.println("finally");
}
//finally可以不要。假设io流,资源,关闭。
}
方法中是throws
public static void main(String[] args) {
try{
new test2().test7(1,0);
}catch (ArithmeticException e){
e.printStackTrace();
}
}
//假设方法中,处理不了这个异常,方法上抛出异常
public void test7(int a,int b) throws ArithmeticException{
if(b==0){
throw new ArithmeticException();//主动抛出异常,一般用在方法中
}
//System.out.println(a/b);
}
3、自定义异常
public class MyException extends Exception
{
//传递数字大于10
private int detail;
public MyException(int a) {
this.detail=a;
}
//toString()
//异常打印信息
@Override
public String toString() {
return new StringJoiner(", ", MyException.class.getSimpleName() + "[", "]")
.toString();
}
}
public class test7 {
static void test(int a) throws MyException {
System.out.println("传递的参数为:"+a);
if(a>10){
throw new MyException(a);//抛出
}
System.out.println("ok");
}
public static void main(String[] args) {
try {
test(11);
} catch (MyException e) {
System.out.println("MyException="+e);
}
}
}