java  异常详解及应用实例

 更新时间:2017年01月18日 15:02:24   投稿:lqh  
这篇文章主要介绍了java 异常详解及应用实例的相关资料,需要的朋友可以参考下

java  异常

 异常的使用实例(异常分类:Error(是由JVM调用系统底层发生的,只能修改代码) 和 Exception(是JVM发生的,可以进行针对性处理))

 1.如果一个方法内可能出现异常,那么可以将异常通过throw的方式new 出相应的异常类,并在方法上   声明throws可能抛出的异常类抛给调用者,调用者可以进行异常捕获,或者继续抛出异常由 上层调用者继续处理,    如果整个过程都没有将异常进行任何处理,那么将由JVM虚拟机进行默认的处理 

2.调用者可以对异常进行try()catch(){}的异常处理, 也可以继续在方法后面throws该异常,catch代码块中    如果不处理也可以进行throw该异常

 3.运行时异常RuntimeException可以不进行显式的异常声明

 4.如果父类中的方法抛出了异常,如果子类对方法进行重写后也抛出异常,那么该异常必须不能大于父类的异常类, 如果父类中方法没有抛出异常,而子类中覆盖的方法却抛出了异常,那么此时只能进行try catch来捕获此异常,但是也可以将此异常在catch代码块中throw  new RuntimeExcetion()进行抛出,这样方法不用进行throws声明  

 5.很多时候异常并不需要调用者进行处理,调用者不一定具有处理能力

 6.异常应该包装成上层调用者可以识别的异常类型,面向不同的调用者,报告不同的异常信息,否者调用者不知道如何处理该异常

    在开发中这点十分重要

  7.finally代码块中常常进行资源的释放及关闭操作,对于打开的资源应该进行反方向的关闭操作,因为资源可能存在依赖性

  8.如果不进行声明异常,那么目的是不让调用者进行处理,让调用者的程序停止,这样必须修改错误代码

public class ExceptionDemo {

 public static void main(String[] args) {
 //OutOfMemoryError内存溢出错误,
 int[] i = new int[1024*1024*1024];
 System.out.println(i[1]);
 
 //ArrayIndexOutOfBoundsException索引越界异常
 int[] s = new int[2];
 System.out.println(s[2]);
 
 
 Calc calc = new Calc(); 
 //假如我们在这里捕获异常
 try {
  calc.run(4, 0);
  calc.run(4, -1);
 } catch (NegativeException e) {//必须先抛出异常的自定义子类
  e.printStackTrace();
  System.out.println(e.getMessage());
  //throw e;//可以继续将此异常抛出
 } catch (ArithmeticException e){//抛出自定义异常类的父类
  e.printStackTrace();
  System.out.println(e.getMessage());
  //throw e;
 } finally {
  System.out.println("finally肯定会执行到");
 }
 //如果上面进行了异常捕获,那么代码可以继续执行,否者代码不能继续执行
 System.out.println("可以执行到!");
 
 try {
  calc.run(4, -1);
  
 } catch (NegativeException e) {
  e.printStackTrace();
  System.out.println(e.getMessage());
  return;
 } finally {
  System.out.println("肯定会执行的");
 }
 System.out.println("执行不到了");//执行不到此行代码
 
 }

}

/**
 * 自定义异常
 */
class NegativeException extends ArithmeticException{
 public NegativeException() {
 }
 public NegativeException(String msg) {
 super(msg);
 }
}

interface AA{
 public abstract void method();
}

class Calc implements AA{
 //ArithmeticException其实为运行时异常(RuntimeException),即使不进行throws声明,也可以通过编译
 public int run(int m,int n)throws ArithmeticException,NegativeException{
 if(n==0){
  throw new ArithmeticException("除数不能为0");
 }else if(n<0){
  throw new NegativeException("除数不能为负数");
 }
 int s = m/n;
 return s ;
 }

 @Override
 public void method() {
 try {
  int p = 4/0;
 } catch (ArithmeticException e) {
  e.printStackTrace();
  throw new RuntimeException();//将异常继续抛出为运行时异常
 }
 }
}


感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • JFreeChart动态画折线图的方法

    JFreeChart动态画折线图的方法

    这篇文章主要为大家详细介绍了JFreeChart动态画折线图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Java中的FutureTask实现代码实例

    Java中的FutureTask实现代码实例

    这篇文章主要介绍了Java中的FutureTask手写代码实例,FutureTask是Future的实现,用来异步任务的获取结果,可以启动和取消异步任务,查询异步任务是否计算结束以及获取最终的异步任务的结果,需要的朋友可以参考下
    2023-12-12
  • Java Ribbon负载均衡详细讲解

    Java Ribbon负载均衡详细讲解

    Ribbon其实就是一个软负载均衡的客户端组件,他可以和其他所需请求的客户端结合使用,这篇文章主要介绍了Ribbon负载均衡服务调用案例代码,需要的朋友可以参考下
    2023-01-01
  • Spring中@order注解用法实战教程

    Spring中@order注解用法实战教程

    @Order注解主要用来控制配置类的加载顺序,数字越小,越先加载,下面这篇文章主要给大家介绍了关于Spring中@order注解用法的相关资料,需要的朋友可以参考下
    2022-11-11
  • Springboot下使用Redis管道(pipeline)进行批量操作

    Springboot下使用Redis管道(pipeline)进行批量操作

    本文主要介绍了Spring boot 下使用Redis管道(pipeline)进行批量操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Java垃圾回收之标记清除算法详解

    Java垃圾回收之标记清除算法详解

    今天小编就为大家分享一篇关于Java垃圾回收之标记清除算法详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • java版简单的猜数字游戏实例代码

    java版简单的猜数字游戏实例代码

    猜数字游戏是一款经典的游戏,该游戏说简单也很简单,说不简单确实也很难,那么下面这篇文章主要给大家介绍了java版简单的猜数字游戏的相关资料,文中给出了详细的实现分析和示例代码供大家参考学习,需要的朋友们下面来一起看看吧。
    2017-05-05
  • 一文带你学习Java中的线程

    一文带你学习Java中的线程

    线程是系统调度的最小单元,一个进程可以包含多个线程,线程是负责执行二进制指令的。本文将详细给大家介绍一下Java中的线程,,需要的朋友可以参考下
    2023-05-05
  • Java使用BigDecimal公式精确计算及精度丢失问题

    Java使用BigDecimal公式精确计算及精度丢失问题

    在工作中经常会遇到数值精度问题,比如说使用float或者double的时候,可能会有精度丢失问题,下面这篇文章主要给大家介绍了关于Java使用BigDecimal公式精确计算及精度丢失问题的相关资料,需要的朋友可以参考下
    2023-01-01
  • 快速了解Hibernate中的Session

    快速了解Hibernate中的Session

    这篇文章主要介绍了快速了解Hibernate中的Session,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12

最新评论