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

java中的异常 try catch的更多相关文章

  1. Java中的异常-Throwable-Error-Exception-RuntimeExcetpion-throw-throws-try catch

    今天在做一个将String转换为Integer的功能时,发现Integer.parseInte()会抛出异常NumberFormatException. 函数Integer.parseInt(Stri ...

  2. java中的异常以及 try catch finally以及finally的执行顺序

    java中的 try.catch.finally及finally执行顺序详解: 1.首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个 ...

  3. 【Java心得总结二】浅谈Java中的异常

    作为一个面向对象编程的程序员对于 下面的一句一定非常熟悉: try { // 代码块 } catch(Exception e) { // 异常处理 } finally { // 清理工作 } 就是面向 ...

  4. Java中的try,catch,finally

    讲解的是关于java中关于try.catch.finally中一些问题 下面看一个例子(例1),来讲解java里面中try.catch.finally的处理流程 public class TryCat ...

  5. Java中的异常详解

    一.异常定义 阻止当前方法或作用域继续执行的问题,称为异常 二.异常分析      所有不正常类都继承Throwable类,这个类主要有两个子类Error类和Exception类.Error指系统错误 ...

  6. Java中的异常和处理详解

    简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. ...

  7. Java中的异常简介

    Java中异常的分类 Java中的异常机制是针对正常运行程序的一个必要补充,一般来说没有加入异常机制,程序也能正常运营,但是,由于入参.程序逻辑的严谨度,总会有期望之外的结果生成,因此加入异常机制的补 ...

  8. java中的异常类

    Java中的异常: 1. Throwable是所有异常的根,java.lang.Throwable Throwable包含了错误(Error)和异常(Exception),Exception又包含了运 ...

  9. Java 中的异常

    前段时间集合的整理真的是给我搞得心力交瘁啊,现在可以整理一些稍微简单一点的,搭配学习 ~ 突然想到一个问题,这些东西我之前就整理过,现在再次整理有什么区别嘛?我就自问自答一下,可能我再次整理会看到不一 ...

随机推荐

  1. 自动化冒烟测试 Unittest , Pytest 哪家强?

    前言:之前有一段时间一直用 Python Uittest做自动化测试,觉得Uittest组织冒烟用例比较繁琐,后来康哥提示我使用pytest.mark来组织冒烟用例 本文讲述以下几个内容: 1.Uni ...

  2. 从零开始实现放置游戏(十)——实现战斗挂机(1)hessian服务端搭建

    前面实现RMS系统时,我们让其直接访问底层数据库.后面我们在idlewow-game模块实现游戏逻辑时,将不再直接访问底层数据,而是通过hessian服务暴露接口给表现层. 本章,我们先把hessia ...

  3. Oracle数据库----查询

    --笛卡尔集select empno,ename, 员工表.deptno, 部门表.deptno, dname from 部门表, 员工表; --添加合适的条件,可以避免笛卡尔集,从而得到正确的多表查 ...

  4. [记录]python异步编程async/await实现

    from selectors import DefaultSelector, EVENT_READ, EVENT_WRITE import socket from types import corou ...

  5. [原创]Zabbix3.4_API的python示例

    说明: 1.python版本为:python2.7 2.zabbix版本为:zabbix3.4 3.通过python脚本调用zabbix的api接口可以实现批量增删改查主机的信息. 示例如下: #-* ...

  6. 洛谷 P1101-题解

    这道题可以用深搜(回溯)来写,相信大部分人都是这么想的,但是有些人可能在一些地方饶了半天,所以这里就贴一下我的思路,个人觉得自己的很好懂,除了tx和ty那里,但是tx和ty的那种用法对于输出路径的题目 ...

  7. 从0系统学Android-2.3使用 Intent 在 Activity 之间穿梭

    2.3 使用 Intent 在 Activity 之间穿梭 在上一节中我们已经学会了如何创建一个 Activity 了.对于一个应用程序来说,肯定不可能只有一个 Activity.下面就来学习多个 A ...

  8. C#4.0新增功能01 动态绑定 (dynamic 类型)

    连载目录    [已更新最新开发文章,点击查看详细] C# 4 引入了一个新类型 dynamic. 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查. 大多数情况下,该对象就像 ...

  9. [PTA] 数据结构与算法题目集 6-11 先序输出叶结点

    //函数PreorderPrintLeaves应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符. void PreorderPrintLeaves(BinTree BT) { ...

  10. PHP强制转换类型

    PHP强制转换类型   获取数据类型 : 1.如果想查看某个表达式的值和类型,用var_dump(). 2.如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype().3.要查看某个类型 ...