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文件,记录异常信息

最新文章

  1. ssh整合问题总结--运行项目时报java.lang.StackOverflowError(堆栈溢出)异常
  2. Hibernate操作指南-实体与常用类型的映射以及基本的增删改查(基于注解)
  3. Issue 4:分布式的基础性问题
  4. 课堂 表单验证 JavaScript js
  5. Constructing Roads (MST)
  6. Java for LeetCode 077 Combinations
  7. qml操作播放器
  8. Contest 20140914 Mushroom写情书 字符串雙hash 後綴數組
  9. Trident内核中取验证码图片的几种方法
  10. BZOJ AC300题留念
  11. vsftpd配置seccomp_sandbox=NO
  12. 实验吧Web-Forms
  13. hdu_2844_Coins(多重背包)
  14. java后端学习流程
  15. grunt之connect、watch
  16. Decorator 装饰(结构型)
  17. 002之MFCSocket异步编程
  18. 自定义合并列:el-table
  19. 第二个spring,第一天
  20. NMAP执行脚本smb-check-vulns.nse出错

热门文章

  1. 西门子PLC中各个组织块OB作用(OB1、OB100……)
  2. vue-cli · Failed to download repo vuejs-templates/webpack: self signed certificate in certificate chain
  3. Hash的应用
  4. Java开发实例大全:3月14日练习
  5. 学习笔记-jvm运行时数据区
  6. Ubuntu通过修改配置文件进行网络配置
  7. CentOS EPEL yum源
  8. Java网络和代理
  9. 神奇的 SQL 之 CASE表达式,妙用多多 !
  10. Java面向对象16种原则