zoukankan      html  css  js  c++  java
  • 8.异常

    一、异常类的继承体系

    Java把所有的非正常情况都分成两种:异常(Exception)和错误(Error),它们都继承自Throwable父类。

    Error错误,一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此应用程序不应该试图使用catch块来捕获Error对象。在定义该方法时,也无须在其throws子句中声明该方法可能抛出Error及其任何子类。

    二、Checked异常和Runtime异常体系

    Java的异常被分为两大类:Checked异常和Runtime异常。所有的RuntimeException类及其子类的实例被称为Runtime异常:不是RuntimeException类及其子类的异常实例则被称为Checked异常。

    Checked异常体现了Java的严谨性,它要求程序员必须注意该异常——要么显式声明抛出,要么显式捕获并处理它,总之不允许对Checked异常不闻不问。

    Runtime异常无须显式声明抛出,如果程序需要捕获Runtime异常,也可以使用try...catch块来实现。

    三、try后面括号的作用

    Java7新特性,支持使用try后面跟随()括号管理释放资源

    例如通常使用try代码块

    try {
            fis = new FileInputStream(source);
            fos = new FileOutputStream(target);
      
            byte[] buf = new byte[8192];
      
            int i;
            while ((i = fis.read(buf)) != -1) {
                fos.write(buf, 0, i);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        } finally {
            close(fis);
            close(fos);
        }
    
    普通写法

     使用Java7新特性

    try (
            InputStream fis = new FileInputStream(source);
            OutputStream fos = new FileOutputStream(target)){
      
            byte[] buf = new byte[8192];
      
            int i;
            while ((i = fis.read(buf)) != -1) {
                fos.write(buf, 0, i);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }

    try括号内的资源会在try语句结束后自动释放,前提是这些可关闭的资源必须实现 java.lang.AutoCloseable 接口。

  • 相关阅读:
    k8s 节点的 NodeAffinity 使用
    template 与 host , item trigger的关系
    mysql 性能优化思路
    nginx 配sorry page
    修改tomcat JVM 大小 jdk--目录修改
    (转)MySQL慢查询分析优化 + MySQL调优
    注册表操作 Microsoft.Win32.Registry与RegistryKey类
    C#(99):WCF之.NET Remoting通讯
    CallContext线程数据缓存-调用上下文
    C#(99):JSON与对象的序列化与反序列化
  • 原文地址:https://www.cnblogs.com/blogforvi/p/9417872.html
Copyright © 2011-2022 走看看