Chinaunix首页 | 论坛 | 博客
  • 博客访问: 551728
  • 博文数量: 156
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1183
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-22 11:42
文章分类

全部博文(156)

文章存档

2015年(67)

2014年(89)

分类: Java

2014-10-30 10:29:19

原文地址:java之路,异常处理 作者:一生有你llx

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();                            //获取异常发生的位置
            //throw e;                                         //再次抛出异常
            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)  throws ArithmeticException,Exp   //抛出多个异常
{
 if (b<0)
  throw new Exp("除数是0");
}

子类覆盖父类的方法,那么子类的该方法不能抛出新的异常,可以是父类抛出的异常,或者父类抛出异常的子类

阅读(994) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~