一生有你llx 阅读(47) 评论(0)
java中的异常:打开不存在的文件,网络断开,数组下标越界,正在加载的类文件丢失等等
java中的异常定义的轻微的错误,人工处理;而Error定义的严重的错误条件,由java虚拟机处理
出现异常时会产生一个异常类Exception,并提交给java运行系统,这个过程叫抛出异常
java运行时系统收到异常对象时会寻找异常代码,这个过程就是捕获异常。如果找不到捕获异常的代码,那程序就会退出。



将可能发生异常的方法放入try语句,异常情况处理放入catch语句,     
class Excep
{
    void devsion(int a, int b) 这后面加“ throws Exception" 声明要抛出异常,此时必须写异常捕获函数
    {
        return a/b;
    }
}
class Test
{
    public static void main(String[] args)
    {
        Excep ex = new Excep();
        try{
            ex.devsion(5,0);
        }
//        catch(ArithmeticException e)                    //更加具体的异常,异常可以捕获一个或者多个,一般具体的写在前面
//        {
 //      }
        catch(Exception e)                                  //异常类Exception, 写在后面
        {
            System.out.println("e.getMessage()");  //获取异常信息,系统方法
            System.out.println("e.toString()");      //获取异常信息,系统方法
            e.printStackTrace();                            //获取异常发生的位置

            System.out.println("除数不能为0");
            System.out.println("finish..");       //不执行,产生异常了直接跳到catch

        }
            System.out.println("finish");      //异常处理完毕,继续执行
        finally                                          //无论有没有异常,finally都会执行,即使在try语句已经返回,finally依然执行
        {                                                //但是当程序终止执行时,finally不执行。 例如System.exit()退出程序后,finally不执行
        }
    }
}
注意:RuntimeException为运行时异常,由于程序编写者明显的失误造成,系统会自动捕获,因此不需要显示的捕获


自定义异常类
class Exp extends Exception         //自定义异常,继承Exception
{
 Exp(String str)
 {
  super(str);
  } 
}

int dev(int a, int b)  throw ArithmeticException,Exp   //抛出多个异常
{
 if (b<0)
  Exp("除数是0");
}