异常
class Test
{ public int devide(int x,int y) throws Exception //throws EXception 抛出异常,如果感觉到这个程序可能出现异常,就加上这条语句,在后面的调用中,如果不加try,catch编译就会出错。
   {  int result=x/y;
      return result;
   }
}
class TestException
{ public static void main(String[] args)
  { try
    { new Test().devide(3,0);}
    catch(Exception ex)
    { System.out.println(ex.getMessage()); } //getMessage 返回异常的信息,是一个字符串,须要我们自己将这个字符串打印在屏幕上
    System.out.println("program is running here!");
  }
}

***创建自己的异常***
class Test
{ public int devide(int x,int y) throws Exception 
   {  if (y<0)
          throw new DevideByMinusException("devisor is"+y); //创建一个异常对象,并且抛出这个异常(注意这个用的是throw而不是throws.)
      int result=x/y;
      return result;
   }
}
class DevideByMinusException extends Exception //创建自己的异常(除数为0时产生的异常)
{ public DevideByMinusException (String msg)
  { super(msg); }
}
class TestException
{ public static void main(String[] args)
  { try
    { new Test().devide(3,-1);}
    catch(Exception ex)    //把上面生成的异常对象传给ex
    { System.out.println(ex.getMessage()); }     //输出结果为devisor is -1
    System.out.println("program is running here!"); //这个语句,运行时一直都输出
  }
}

***抛出多个异常***

class Test
{ public int devide(int x,int y) throws ArithmeticException,DevideByMinusException 
   {  if (y<0)
          throw new DevideByMinusException("devisor is"+y); //创建一个异常对象,并且抛出这个异常(注意这个用的是throw而不是throws.)
      int result=x/y;
      return result;
   }
}
class DevideByMinusException extends Exception //创建自己的异常(除数为0时产生的异常)
{ public DevideByMinusException (String msg)
  { super(msg); }
class TestException
{ public static void main(String[] args)
  { try
    { new Test().devide(3,-1);}
    catch(ArithmeticException ex)  //算术异常
    { System.out.println("program is running into ArithMetic");
      ex.printStackTrace()    //printStackTrace将异常情况直接打在我们的屏幕上
    }
    catch (DevideByMinusException ex) //自定义的除数为负数的异常
   {  System.out.println("program is running into ArithMetic");
      ex.printStackTrace()    //printStackTrace将异常情况直接打在我们的屏幕上
   }
    catch(Exception ex)    //这个异常必须放在所有的,catch的后面
    { System.out.println(ex.getMessage());
      System.exit(0);  //只有使用了这条语句,才不执行finally语句,这条语句表示程序彻底结束。
    }
   
    finally  //不管有没有异常发生finally语句都要执行,即使是在程序前面用了return提前返回了,finally也要被执行,不管程序发生什么情况finally语句都要被执行,只有用System.exit(0),程序彻底结束,这条语名才不执行.
   { System.out.println("finally"); }   
    System.out.println("program is running here!");
  }
}

***故意用异常实现程序的跳转***
class Test
{ ....
  ....
  void fun()
  {  try
     { if (x==0)
          throw new XxxException("xxx");
       else
          throw new YyyException("yyy");
        .....
        .....
      }
      catch (XxxException e) //如果x==0的话,程序跳转到这里
      { ......}
      catch (YyyException e) //如果x!=0的话,程序跳转到这里  
      {.......}       
   }
    .....
 }

***子类重写父类的方法,抛出的异常,只能比父类少,不能比父类多***
class Test
{ public int devide(int x,int y) throws ArithmeticException,DevideByMinusException 
   {  if (y<0)
          throw new DevideByMinusException("devisor is"+y);
      int result=x/y;
      return result;
   }
}
class SubTest extends Test
{ public int devide(int x,int y) throws ArithmeticException
//这里抛出的异常只能是父类里有的,如父类方法中的全部抛出的异常,或是其中的异常,或都不写,但一定不能比父类多。
  {.....}
 }

java学习笔记(七)----异常相关推荐

  1. 【原】Java学习笔记030 - 异常

    1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 /* ...

  2. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  3. 【Java学习笔记七】常用数据对象之数组

    同一般的对象创建和定义一样,数组的定义和创建可以分开进行也可以合并一起进行. 一维数组定义格式: <元素类型>[] <数组名>;//[]也可以放在数组名的后面 一维数组创建格式 ...

  4. java学习笔记七——继承

    子类继承父类后子类就拥有父类的属性和方法 class a { } class b extends a { } b继承了a 转载于:https://www.cnblogs.com/huanghai/ar ...

  5. 2022Java学习笔记七十三(异常处理:运行时异常、编译时异常、异常的默认处理的流程)

    2022Java学习笔记七十三(异常处理:运行时异常.编译时异常.异常的默认处理的流程) 一.异常体系 1.Exception:java.lang包下,称为异常类,它表示程序本身可以处理的问题 2.R ...

  6. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  7. 2022年Java学习笔记目录

    一.2022年Java任务驱动课程 任务驱动,统摄知识点:2022年Java程序设计讲课笔记 二.2022年Java学习笔记 (一)踏上Java开发之旅 Java学习笔记1.1.1 搭建Java开发环 ...

  8. java学习笔记:全部,txt版本

    java学习笔记:全部,txt版本 笔者注: 1.不知道怎么上传附件,所以就把txt文本内容全部贴在这里吧. 2.已经把txt版本的笔记上传到CSDN了,我没有设置索要积分才能下载,但是不知道为什么C ...

  9. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

最新文章

  1. asp.net传递参数
  2. 删除Win7隐藏的系统分区
  3. 【推荐】新冠肺炎的最新数据集和可视化和预测分析(附代码)
  4. java序列化如何实现_Java实现序列化与反序列化的简单示例
  5. python怎么导出程序_[272]如何把Python脚本导出为exe程序
  6. Matplotlib - bar(条形图)
  7. windows配置本地端口映射到其它电脑
  8. Azure角色管理技巧和工具
  9. Ubuntu 16.04 折腾日记
  10. leetcode第一刷_Merge Intervals
  11. 打开SQlite数据库
  12. 电子时钟课程设计报告
  13. Multisim14 - 运行10版本文件时数码管一直显示为0的问题
  14. Java冒泡算法(优化版)
  15. linux网络配置文件,Linux下一块网卡设置多个IP地址
  16. 如何有效的屏蔽百度蜘蛛
  17. 什么样的女人才是老婆(感动)
  18. 匿名吐槽有风险,脉脉又被告了
  19. 关联规则:营销购物,自有乾坤
  20. NuGet命令的用法

热门文章

  1. 如何在NEO共识节点间分配任务
  2. 【spring boot2】第2篇:配置文件YAML语法
  3. listview条目用状态选择器没反应
  4. Unix时间戳转换(python)
  5. python binary lib on win/各种python库的二进制包
  6. python windows时间同步工具
  7. 在进度面前,质量该不该打折?
  8. 浅谈人性 - 讲讲人性丑恶的一面
  9. C++线程同步之临界区
  10. 第21章:MongoDB-聚合操作--聚合管道--$geoNear