//什么是异常? 程序运行的过程中发生的各种错误

//为什么学习异常? 1、让程序逻辑思维更健康 2、有能力解决异常

//A异常的分类

//1 未检查异常:编译时不报错,运行时可能出错。【实质上是一些逻辑上的问题】

//2 已检查异常:编译时一定报错,且错误信息是:unhandled exception type XXX

//对待未检查异常,尽量使用逻辑思维来解决问题【if语句等】,解决不了再用异常处理机制

//对待已检查异常,必须使用异常处理机制解决

//B异常的处理机制

//1 try{...}catch{...} 处理掉;负责的表现

//2 throws 不处理,抛出;不负责分表现

public class ExceptionTest{

  public static void main(){

    //例一

    try{

    String str=null;

    System.out.println(str.length());//空指针异常,即 对象不存在

    }catch(NullPointerException e){

      System.out.println("字符串不存在,无法计算长度");

    }

    //例二

    String str2=null;

    if(str != null){

      System.out.println(str);

    }else{

      System.out.println("字符串不存在,无法处理业务");

    }

    //例三

    int i=0;

    if(i==0){

      System.exit(0);//结束程序运行

    }

    double j=10/i;//ArithmeticException

    System.out.println(j);

    //例四

    String str3="qwertyuiop";

    Date d1=DateFormat.getDateInstance().parse(str3);//ParseException

  }//main方法结束

  //程序员转存业务本身,将异常抛出给别人处理

  //一般main方法不再继续抛出给别人

  public static Date StringToDate(String str) throws ParseException{

    Date d1=null;

    d1=DateFormat.getDateInstance().parse(str);

    return d1;

  }

}//类结束

//throw 人为将程序中的某种现象作为异常来看待【人造异常】

//使用方法:

//1、一般出现在方法体中(throws出现在方法头部)

//2、格式:throw new 异常类构造器([异常原因]);

//3、方法头部需要throws来配合处理这个人造异常

//如,一个人的年龄不能为负数或大于150岁,简单编码如下:

public class Student{

  private int age;

  public void toSetAge(int age) throws Exception{

    if(age>=0&&age<=150){

      this.age=age;

    }else{

      throw new Exception(age+"岁,不是合法的年龄");

    }

  }

}

//小粒度与大颗粒的异常处理机制

public class ExceptionTest{

    //小粒度异常处理,颗粒a

    try{

    String str=null;

    System.out.println(str.length());//空指针异常,即 对象不存在

    }catch(NullPointerException e){

      System.out.println("字符串不存在,无法计算长度");

    }

    //小粒度异常处理,颗粒b

    try{

    String str3="qwertyuiop";

    Date d1=DateFormat.getDateInstance().parse(str3);//ParseException

    }catch{...}

    //小颗粒异常相互不影响,这不好,例如ATM取钱过程有三个颗粒

    //颗粒一:插入合法的银行卡 颗粒二:输入正确的密码 颗粒三:取款

    //若使用小颗粒异常处理这三个异常,这插入不合法的卡,使用不正确的密码都可以取款

    //改造成大颗粒异常处理机制:结构如下

    try{

      颗粒一 插卡;

      颗粒二 验证密码;

      颗粒三 取款;

      ...

    }catch(颗粒一的异常){

      处理颗粒一的异常

    }catch(颗粒二的异常){

      处理颗粒二的异常

    }catch(颗粒三的异常){

      处理颗粒三的异常

    }...

  //此时,插卡错误或密码错误,就无法取款

  //有时使用小颗粒比大颗粒好,如:公司有三个门窗,下班后关闭每个门窗是一个颗粒,

  //若有一个门窗无法没有关闭,其它的还是应该要关闭,此时使用小粒度异常处理机制

}

转载于:https://www.cnblogs.com/qixiawentang/p/5464835.html

Java基础-异常处理机制相关推荐

  1. 简述java的异常处理机制_简述java异常处理机制

    引言: Hello,我的好朋友们,又到我们相聚的时间了,今天我要和大家分享一些有关java异常处理的相关 知识,也是通过老师的讲解和相关材料的借鉴之后的一个比较系统的总结,真心希望写完这篇文章的我和看 ...

  2. 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)

    在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...

  3. JAVA的异常处理机制有什么好处,你造吗?

    作为JAVA程序猿的你们,是不是在某个时刻产生一种疑问:为什么要有异常处理机制呢?还记得万有引力是怎么诞生的吗?是因为当年牛顿小朋友躺在树下,书上掉下一个苹果,引起了小牛的关注,于是产生了牛顿定理[小 ...

  4. java中异常处理机制

    文章目录 一 认识常见异常 1 除0异常(算术异常) 2 数组越界异常 3 空指针异常 二 异常的体系 三 异常的用法(try-catch语句) 1概述与代码理解 2 注意事项 3 finally语句 ...

  5. 【学习笔记】JAVA基础——异常处理部分

    文章目录 前言 简介 一. try.catch与finally ① try && catch ② finally ③ throws 补充:JVM 相关 二. 异常的分类 ① 分类解释与 ...

  6. 教妹学 Java:异常处理机制

    "二哥,今天就要学习异常了吗?"三妹问. "是的.只有正确地处理好异常,才能保证程序的可靠性,所以异常的学习还是很有必要的."我说. "那到底什么是异 ...

  7. Java基础——异常处理

    在程序运行过程中,如果JVM检测出一个不可能执行的操作,就会出现运行时错误. 在Java中,运行时错误会作为异常抛出.异常就是一个对象,表示阻止正常进行程序执行的错误或者情况.如果异常没有被处理,那么 ...

  8. [Java基础] 反射机制汇总

    引言 初学Java反射机制的时候,只是感觉很神奇,但是不知道学了该怎么用,所以过了一段时间就忘得差不多了:最近接触到了框架,在学习中遇到了反射,深深体会到了反射机制的神奇,回来复习了一下反射机制,写一 ...

  9. Java基础——类加载机制及原理

    一.什么是类的加载? 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结 ...

最新文章

  1. ssh架构之hibernate(一)简单使用hibernate完成CRUD
  2. 相机模拟光圈_我的相机应该使用什么光圈?
  3. mysql如何给表字段加密_Mysql 字段加密
  4. clipse中Access restriction: The type ‘XXX’ is not API 解决
  5. linux平台下C语言按进程名查找进程号pid
  6. java反射取实体字符串_JAVA反射机制 通过反射 Field类获取和修改对象类的字符串值...
  7. 整古专家之恶意批处理命令
  8. 游学只缘图利国 求知理应做腾骧
  9. 计算机坐标公式,经纬度换算坐标公式(经纬度转大地坐标公式)
  10. 麻辣探:大学生就业翻译竞争激烈 IT制造需求大
  11. ubantu 14.04重置密码
  12. PLC MODBUS RTU读写IC卡操作
  13. Java远程开关机(全过程)
  14. linux 龙芯cpu 测试,龙芯CPU实测!对比赛扬 没想到会这样
  15. bat一键清理系统垃圾/系统日志
  16. Opencv之Unsharp Mask(USM)锐化
  17. 机器学习常用性能度量中的Accuracy、Precision、Recall、ROC、F score等都是些什么东西?...
  18. 网络游戏安全小议(端游/页游/手游)
  19. 页面怎么导出html文件大小,报表HTML导出时自适应页面大小
  20. HCIA的OSI基础模型理解

热门文章

  1. HALCON学习之旅(一)
  2. 写给萌新们的Python安装及环境配置(anaconda,pycharm,GPU)教程
  3. CNN卷积神经网络分析
  4. Spark常用的算子以及Scala函数总结
  5. 调优哪家强——tensorflow命令行参数
  6. mysql group by能用到索引吗_`MySQL GROUP BY使用索引时速度较慢
  7. 因为此网站使用了 hsts_长春定制小程序服务,网站设计市场价格
  8. Idea中Spring整合MyBatis框架中配置文件中对象注入问题解决方案
  9. 应用在tomcat下的四种部署方式(原创)
  10. Android之自定义checkbox样式