异常机制
异常机制
异常指程序运行中出现的不期而至的各种情况
-
检查性异常/编译异常
用户错误
-
运行时异常
运行时异常有可能在编译时被忽略
NullPointerException
ArithmeticException
ArrayIndexOutOfBoundsException
ClassCastException
NumberFormatException
- ERROR
public static void main()
{
int a=1,b=0;
try{//监控区域
System.out.println(a/b);
}
catch(ArithmeticException e)//捕获的异常类型
{//异常封装到e对象内
System.out.println("");
}
finally{//处理善后工作,不管有没有异常,finally都要执行
System.out.println("");//finally 可以省略
//通常将释放资源的代码放到finally内
}
}
//可以有多个catch,最大的捕获异常类型应放在最下面
- exception异常
throws机制,将处理异常的任务交给调用者
如果有try-catch-finally机制则处理
- 可以有多个catch来catch不同的异常,子类异常写在父类异常之前(异常最多只能被catch一次)
//主动抛出异常,一般在方法中使用
if(b==0)
{
throw new ArithmeticException();
}
//在方法上抛出异常
public void test(int a, int b)throws ArithmeticException//也可以为可能发生的异常的父类异常/多个异常
{
;
}
子类重写父类抛出异常时,要么和父类抛出的异常一致,要么是父类抛出的异常的子类异常(不能扩大异常的范围)
编译异常必须显示地处理
自定义异常
static class myException extends RuntimeException{
private int detail;
public myException (int a){
this.detail=a;
}
@Override
public String toString()
{
return "myException{"+"detail="+detail+"}";
}
}
public class test{
static void test(int a)throws myException{
if(a>10)
throw new myException(a);
System.out.println("ok");
}
public static void main(String[] args){
try{
test(10);
}
catch (myException e)
{
System.out.println("myException=>"+e);
}
}
}

浙公网安备 33010602011771号