zoukankan      html  css  js  c++  java
  • 异常

    java中错误分为:
    异常Exception和错误Error
    异常又分为:非运行时异常(编译时异常)和运行时异常RuntimeException
    java程序------编译成.class文件-------再运行
    错误:
    一般是指java虚拟机相关的问题,如系统崩溃、虚拟机出错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断.
    编译时异常:
    就是在编译的时候就报错了,如sql连接错误,该引的包没引,代码语法书写错误,导致编译不过去出错...
    运行时异常处理:
    就是程序中有bug
    如果不对运行时异常进行处理,那么出现运行时异常之后,该线程就会中止
    如果不想中止线程,则必须捕获运行时异常
    关键字try catch finally throws
    throws:
    把异常暴露出来
    开发中一般当方法中遇到异常后捕捉后抛出异常,然后抛给调用该方法的上一层方法,一层层抛出去,最后显示在控制台上
    finally:
    finally控制的语句体一定会执行,常用于释放资源,在IO流操作和数据库操作中会见到

     1 public class Demo {
     2     public int method() throws Exception{
     3         int x = 10;
     4         try {
     5             x = 20;
     6             System.out.println(1/0);
     7             return x;
     8         } catch (Exception e) {
     9             e.printStackTrace();
    10             x = 30;
    11             return x;
    12         } finally {
    13             x = 40;                        
    14         }
    15     }
    16 }
    17 public class Test {
    18     public static void main(String[] args) throws Exception {
    19         Demo d = new Demo();
    20         System.out.println(d.method());
    21     }
    22 }

    运行结果:

    java.lang.ArithmeticException: / by zero
    at cn.alibaba.sf.Demo.method(Demo.java:8)
    at cn.alibaba.sf.Test.main(Test.java:28)
    30

    解释如下:

    当try里面遇到异常后会执行catch里面代码,在执行到return的时候,会看看有没有finally

    如果有会先将return的结果放在某个地方存储,而且该结果是不可更改的,然后执行finally,最后将该结果返回

    也就是说虽然finally一定会执行,但是对结果是毫无影响的,另外finally里面也是不能写return的,只适合写对结果毫无影响的代码,实际开发中多用于释放资源

    如果try里面不遇到异常呢,同样会执行finally,结果是20,理由还是同样的

  • 相关阅读:
    身份证、姓名、手机号、地址、邮箱脱敏处理
    使用Document解析xml
    java_获取某年开始和结束时间
    java_获取某月开始和结束时间
    java_获取本周开始和结束时间
    java_获取明天开始和结束时间
    java_获取昨天开始和结束时间
    java_获取今天开始和结束时间
    java_给时间加上几天/几小时/几分钟
    在Ue4里面使用自定义鼠标
  • 原文地址:https://www.cnblogs.com/jaro/p/9015209.html
Copyright © 2011-2022 走看看