zoukankan      html  css  js  c++  java
  • java中的异常 try catch

    1.学习异常的原因?
     
        如果没有异常处理机制,那么程序的一点小问题,都会导致【程序终止运行】。实际开发中显然是不可能的,所以异常对于程序来说是非常重要的。
        
    2.处理异常的方式:
       A.if结构:

             1。代码量大,代码结构不明显

             2。程序员的大部分精力不是用在流程上,而是“堵漏洞”。
       
             3。遗留一个漏洞,程序依然终止。

       B。异常处理机制:
            try  catch  finally    throw         throws

                异常的捕获         抛出异常       声明异常。


    3.异常处理的结构:

       第一种:  try---catch:

           程序正常运行:只走try代码块里的代码;catch块不执行。


           程序发生异常:走try报错前的代码--会产生一个异常对象;

                         异常对象与catch块捕获的异常类型进行对比;

                     如果匹配:执行对应catch块代码;

                     如果不匹配:程序依然终止。 


      第二种:try--catch---catch:

              程序正常运行:只走try代码块里的代码;catch块不执行。


              程序发生异常:走try报错前的代码--会产生一个异常对象;

                         异常对象与catch块捕获的异常类型进行对比;

                     如果匹配:执行对应catch块代码;【只有一个匹配的catch块代码】

                     如果不匹配:程序依然终止。
            

              注意:1.父类的异常类型【必须】在最后一个catch里。
                    2.子类的异常类型顺序无关。
                    3.最后一个catch块都是存放父类的异常类型。


       第三种:try--catch--catch--finally


             程序正常运行:只走try代码块里的代码;catch块不执行;走finally。


              程序发生异常:走try报错前的代码--》会产生一个异常对象;

                          异常对象与catch块捕获的异常类型进行对比;

                     如果匹配:执行对应catch块代码;【只有一个匹配的catch块代码】
                              ---走finally

                     如果不匹配:程序依然终止。 ---走finally


              【问题:什么情况下,finally不走】

                   1.return :finally代码块依然执行;
                              先执行catch块中return前面的代码;
                              再执行finally块中的代码;
                              最后执行return。

                   2.System.exit(1);程序退出。  终止finally块的执行。

    4.输出异常信息的形式:
      System.out.println("提示信息");
      System.out.println(e.getMessage());
      e.printStackTrace();

    5.throws关键字(声明异常):
        ---作用:我处理不了,你来处理,我告诉你应该注意的事项。


        当你需要告诉调用者,该方法需要注意异常时,使用throws。


        使用:

            1.在方法定义的时候:

            public void 方法名1() throws 异常类型1,异常类型2{

            }

             2.方法调用的时候:两种方法来处理:

               A。使用try--catch进行异常捕获

                            try {
             被调用的方法名1();
       } catch (异常类型1 e) {
        e.printStackTrace();
       } catch (异常类型2 e) {
        e.printStackTrace();
       }finally{

                            }

              B。不处理,继续往上声明异常:

                 public void 方法名2()throws 异常类型1,异常类型2{
      被调用的方法名1();
          }

                    

    6.throw(抛出异常):

     ---不是异常,为了引起调用者重视,手动抛出异常。
      

       使用throw:
            public void setsex(String str){
                if(!str.equals("男")){

                    throw new ClassCastException("性别必须为男或者女");

                 }else{

                    String sex=str;
                 }
            }
    7.异常分类:

                 object

                throwable
       
         error              Exception

                        checked(编译异常)    Running(运行异常)

    error :仅靠程序本身无法恢复的严重错误。

    Exception:→由java应用程序抛出和处理的非严重错误。

    checked:异常必须处理。(不处理,无法运行)

    Running:不处理可以,一旦发生异常,程序终止。

    8.log4j 开源日志文件:

    作用:把异常信息,在一个独立的文件里进行记录或者是输出到控制台。

       步骤:
     1.把log4j-1.2.17.jar 方法项目的lib文件夹下;加载:选中--右键---buil path---add to buil path 

           2.把log4j.properties 放到项目src ,不能放到src外面,或者是src的子目录都不行。
     3.调用:

     创建logger对象:
      public static Logger logger=Logger.getLogger(Test.class);
         在catch块中写记录异常语句:
      logger.debug("提示信息");
      logger.debug(e.getMessage());
         | 
     这里可以是debug,info,warm,error,fatal五个输出级别

      4.刷新项目,出现 jbit.log文件,记录异常信息

  • 相关阅读:
    输入输出重定向
    MarkdownPad 2中编辑
    (转)Maven最佳实践:划分模块
    (转)maven设置内存
    我收集的sonar参考资料
    (转)linux service理解
    制作service服务,shell脚本小例子(来自网络)
    6
    4
    5
  • 原文地址:https://www.cnblogs.com/zhuhuibiao/p/9313922.html
Copyright © 2011-2022 走看看