2020.7.27

一、今日学习内容

   1、在java中如何进行异常处理:java异常处理的方法一般有两种,分别是使用try…catch…finally…和throws来操作。

   (1)Try…catch…finally…

           通过使用Try…catch…finally….语句处理异常,它捕获被命名为属于异常类的异常,并调用方法处理它。其中,finally 无论有无异常都会执行。

           Try...catch异常处理代码块的基本形式如下:

try   //监视
    {
     可能发生异常的代码块;
     }
    catch (异常类型  异常对象名)      / /捕获并处理异常
      {
             异常处理代码块;
       } finally{
                         / /最终执行
          }

        示例:使用Try…catch…finally…

public class TryCatchFinally{
      public static void main (String[] args) {
          try{
                 int x=5;
                 int y=x/0;
                 System. out.println(y) ;
          }catch (Exception e) {
                  e.printstackTrace() ; //将错误打印到堆栈
           } finally{
                System. out.println("Over!") ;
            }
        }
}

       整数是不可以除以0的,因为这句代码会出现异常,所以用try…catch…finally…捕获它

       结果:

      

     示例:

public class TryReturn {
       public static void main (String[] args) {
              TryReturn t=new TryReturn() ;
              int x =t.get();
              System. out.printin("x="+x);
       }
       public int get() {
           int x=0;
           try{
                   x=5;
                   return x;
            } catch (Exception e) (
                 e.printStackTrace() ;
            }finally{
                x=10;
                 return x;
            }
       }
}

    输出结果:x=10

    如果将finally去掉,输出结果是x=5;从该结果可以看出,貌似finally没有执行一样,其实finally的语句是执行的,只不过方法是return 一个值, 只不过是从try 语句中返回的。其中finally可以省略。

   catch语句可以有多个,并且如果用户要捕获Exception,则将Exception放在最后,不能放在前面,否则会出错,可以简单理解为,如果要捕获多个异常,异常的范围要按照从小到大顺序叠放。

  示例:catch多个异常

public class TryCatchFinally {
     pub1ic static void main(String[] args) {
       try{
             int x=5;
             int y= x/0;
             System. out.println(y) ;
        } catch (IllegalArgumentException e) {
                e. printStackTrace ();   //将错误打印到堆栈
        }catch (Exception e) {    //Exception的范围比较大,应该放在后面
              e. printstackTrace(); *
        }
    }
}

     总结:当抛出一个异常时,异常会由相应的catch语句捕获并处理。与一个try 相关的catch语句可以有多个,构成多重catch语句,异常类型决定了要执行哪个catch 语句。如果没有抛出异常,那么,try 代码块就会结束,并且会跳过它的所有catch语句,从最后一个catch后面的第一个语句继续执行。其实try语句也可以嵌入try语句,一个try代码块可以嵌入到另一个try代码块中。由于内部try代码块产生的异常如果没有被与该内部try代码块相关的catch捕获,就会传到外部try代码块。

public class TryCatchFinally { (
      public static void main (String[] args) {
           try {
              try {
                     int x= 5;
                     int y=x/0;
                     System. out.println(y) ;
               } catch (Exception e) {
                      e.printStackTrace() ;
           } catch (IllegalArgumentException e) {
                     e.printstackTrace() ;//将错误打印到堆栈
           } catch (Exception e) {// Exception的范围比较大,应该放在后面
                   e.printStackTrace() ;
           }
     }
}

    (2)使用throws抛出异常

        声明抛弃异常是在一个方法声明中的throws子句中指明的。throws子句方法的基本形式:

           [修饰符]    返回类型   方法名( 参数1,参数2……) throws 异常列表 {  }

        示例:通过throws抛出异常

public class ThrowsDemo{
        public static void main (String[] args) throws Exception {
                 int x=5;
                 int y=x/ 0;
                 System. out.println(y) ;
         }
}

     throws子句中同时可以指明多个异常,说明该方法将不对这些异常进行处理,而是声明抛弃它们。

二、遇到的问题

     对异常问题记得不清楚,多看多记

三、明日计划

    继续学习第八章的内容

原文地址:https://www.cnblogs.com/wmdww/p/13387441.html