java 异常

java语言中,在程序执行中发生的不正常情况叫做异常(开发的语法错误和逻辑错误不是异常);

异常分为两类:Error和Exception;

Error:Java虚拟机无法解决的严重问题,如JVM系统内部错误,资源耗尽等严重错误,一般不编写

          针对性的代码进行处理;

Exception:其他因为编程错误或偶然的外在因素导致的一般性问题,可以使用针对性代码进行处理,

                   如:空指针访问,试图访问不存在的文件,网络中断等等。

                    分为编译时异常和运行时异常(Runtime Exception)。

常见的运行时异常: 数组下标越界(ArrayIndexOutOfBoundsException),算术异常(ArithmeticException)

                             类型转换异常(ClassCastException),空指针异常(NullPointerException)

当程序执行时,如果出现异常,那异常之后的代码就不再执行了。

如何处理Exception异常:

 Java提供抓抛模型:

抛------ 1. 当程序出现异常,就会在异常代码处生成一个对应的异常类型的对象,并将此对象抛出,一旦抛出此异常的对象,

              那么程序就会终止执行,此异常类的对象会被抛给方法的调用者。如果希望某些语句有无异常都执行,

             那么就要放到finally中。不论try,catch中是否有return 语句,是否有异常,finally中语句都会执行。

              2. 自动抛出与手动抛出(throw+ 异常类对象)

              3.  手动抛出的异常类对象,可以是现成的异常类对象,也可以是自定义的异常类对象。

               4. 自定义异常类继承Exception 或者其子类的异常类型,提供一个序列号,提供几个重载的构造器

         public static void main(String[] args)throws FileNotFoundException,IOException{
                  try {
                      int i = 10;
                       throw new MyException("抛出");
                        }catch(MyException e){
                                   e.printStackTrace();

                        }

            }

        class MyException extends Exception{
          static final long serialVersionUID = -123456;  //每个异常类的序列号
           public MyException(){
           }
            public MyException(String msg){
                        super(msg);
            }
        }

抓------抓住上一步抛出的异常类的对象,即为异常处理的方式。

异常处理方式一: try-catch

       try{

           //可能抛出异常的代码

           }catch(Exception1 e){

            //异常处理程序

           }catch(Exception2 e){

          //异常处理程序

           }finally{

            //有无异常都执行,finally是可选的

           }

1.  不论try,catch中是否有return 语句,是否有异常,finally中语句都会执行。

2. try-catch 是可以相互嵌套的,finally是可选的,   catch从上往下执行有匹配的异常类型句执行

3. e.getMessage(),  e.printStackTrace()

异常处理方式二:在方法声明处抛出异常,即出现异常的方法显示地声明抛出某种异常,表示该方法不对该异常

            进行处理,将由调用者处理。

public static void main(String[] args) throws FileNotFoundException,IOException{
      method2();

}

 static void method2() throws FileNotFoundException,IOException{

       FileInputStream fis = new FileInputStream(new File("hello.txt"));
       int b;
       while(( b= fis.read()) != -1){
           System.out.print((char)b);

       }

      fis.close();

   }






                                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值