zoukankan      html  css  js  c++  java
  • java异常处理机制(try-catch-finally)

    /*
    * 异常处理机制
    * 1.分类:Error和Exception
    * Error错误是JVM自动报错的,程序员无法解决例如开数组过大int a[]=new int [1024*1024*1024];
    * Exception错误时程序员要解决的问题,例如指针越界,零做除数
    * 2.异常处理
    * try{
    * 需要检测是否发生异常的代码
    * }
    * catch(Exception e){
    * 处理异常的代码(一般是打印错误信息)
    * }
    * finally{
    * 必须要运行的代码(一般是关闭数据库等释放资源的操作)
    * }
    * */

     1 public class test {
     2     public static void main(String[] args) {
     3         int a=10,b=0,c=0;
     4         try{
     5             c=div(a,b);//有可能出错的代码,放在try中进行检测
     6         }catch(Exception e){
     7             //自己定义的输出内容
     8             System.out.println("除数是0啦!");
     9             //得到错误信息
    10             System.out.println(e.getMessage());
    11             //异常名称和异常信息
    12             System.out.println(e.toString());
    13             //异常名称+异常信息+异常位置(JVM默认的异常处理机制)
    14             e.printStackTrace();
    15         }finally{
    16             System.out.println("程序有错请检查");
    17         }
    18         
    19         System.out.println("经过运算c="+c);
    20     }
    21     //在有可能出现抛异常的函数名后面需要加上throws Exception来声明可能会抛出异常,提高程序的安全性
    22     //调用该方法的地方必须要try-catch语句,否则编译错误
    23     public static int div (int a,int b)throws Exception{
    24         return a/b;
    25     }
    26 }

    /*
    * try和finally内的代码块是肯定会执行的
    * catch中的代码块只有抛出异常时才会执行(如果有多个catch,只会执行一个,而且抛出的异常也只有一个)
    *
    *
    * 当然平时我们会用到一些自定义的异常,下面我们介绍一下自定义异常的内容
    *
    * 自定义异常必须要继承Exception类,否者无法抛出异常*/

     1 public class test {
     2     public static void main(String[] args) {
     3         int a=10,b=-9,c=0;
     4         try{
     5             c=div(a,b);//有可能出错的代码,放在try中进行检测
     6         }catch(fushuException e){
     7             //自己定义的输出内容
     8             System.out.println("除数是负数啦!");
     9             //调用tostring方法,和getValue方法,来打印相应的报错语句
    10             System.out.println(e.toString()+"负数的值是:"+e.getValue());
    11         }finally{
    12             System.out.println("程序有错请检查");
    13         }
    14         
    15         System.out.println("经过运算c="+c);
    16     }
    17     //在有可能出现抛异常的函数名后面需要加上throws Exception来声明可能会抛出异常,提高程序的安全性
    18     //调用该方法的地方必须要try-catch语句,否则编译错误
    19     public static int div (int a,int b)throws fushuException{
    20         if(b<0){
    21             //因为是个人写的异常类,所以要自己将异常类创建,并抛出
    22             throw new fushuException("输入的除数是负数---/by 负数", b);
    23         }
    24         return a/b;
    25     }
    26 }
    27 /*
    28  * 定义一个负数异常类,一旦出现除数是负数,就会抛出异常
    29  * */
    30 class fushuException extends Exception{
    31     private int value;
    32     public fushuException(String msg,int value) {
    33         //在Exception这个父类中有赋值函数和输出函数,所以只需要调用父类的构造函数
    34         super(msg);
    35         this.value=value;
    36     }
    37     public int getValue(){
    38         return value;
    39     }
    40     
    41 }

    /*
    * throws和throw的区别
    * 1.位置不同
    * throws放在函数名后面
    * throw放在函数里面
    * 2.后面跟的内容不同
    * throws后面跟一个或多个异常类名,用逗号隔开
    * throw后面跟一场对象
    * */

  • 相关阅读:
    【Hadoop环境搭建】Centos6.8搭建hadoop伪分布模式
    【Java安装】Centos6.8 安装Java1.6
    【SVN】win7 搭建SVN服务器
    【KVM】Ubuntu14.04 安装KVM
    【VNC】Ubuntu14.04LTS下安装VNC View
    【虚拟化】支持IDE/SATA/SCSI
    【KVM安装】在Centos6.8中安装KVM
    【脚本】新增未扩展磁盘容量
    【SVN】自动定时更新
    【GIS】地球经纬度和米换算(转)
  • 原文地址:https://www.cnblogs.com/zxxiaoxia/p/4185693.html
Copyright © 2011-2022 走看看