zoukankan      html  css  js  c++  java
  • Java Throwable相关知识

    package org.li.basic.throwable;
    
    /**
     * Created by lijy on 2017/8/5.
     *
     * 所有的异常都继承自类Throwable, Throwable下主要分两大类Error和Exception,
     * Exception下分RuntimeException和其他Exception,RuntimeException和Error
     * 都属于unchecked异常,通常不在应用程序里catch,而是有程序逻辑自身避免引发unchecked
     * 异常,Exception的非RuntimeException子类都属于checked异常,需要捕获处理或
     * 通过throws关键字显示标记。
     *
     * Throwable类主要实现了fillinStackTrace方法,用于记录当前Java栈调用位置,并
     * 在构造函数中默认调用fillinStackTrace方法,除非显示指定writableStackTrace=false
     * 不要把try-catch当做if-else来控制程序的逻辑,因为产生异常的开销比普通逻辑要大,
     * 其中fillinStackTrace就是开销较大的方法之一。因此不建议大量使用Throwable机制来
     * 做业务异常处理,重写fillinStackTrace可以提高异常效率,但是却获取不到调用栈追踪
     * 的相关信息。
     *
     * Throwable的子类Error和Exception等几乎没有个性化逻辑,主要是对Throwable做一个
     * 概念区分。
     *
     * 对于底层代码一般少用try-catch捕获异常以提高效率,对于顶层代码必须捕获所有异常,
     * 记录异常日志,把异常转换为错误码或友好提示信息输出给终端调用方。
     *
     * 与Jvm相关知识补充,OutOfMemoryError通常是堆内存占满,StackOverflowError
     * 一般是由于递归导致的栈内存占满。
     */
    
    import java.io.IOException;
    
    public class Client {
        public final static void main(String[] args){
    
            //1.对应checked异常,需要捕获并处理
            try{
                testCheckedException();
            }catch (IOException e){
                e.printStackTrace();
            }
    
            //2.对应unchecked一般不做捕获,应该修改程序逻辑避免
            testUncheckedException();
        }
    
        /**
         * 检查性异常必须显示捕获或通过throws标记
         * @throws IOException
         */
        private static void testCheckedException() throws IOException{
            throw new IOException();
        }
    
        /**
         * 非检查性异常不需要捕获或标记
         */
        private static void testUncheckedException(){
            String empty = null;
            empty.length();//引发NullPointerException
        }
    }
  • 相关阅读:
    计算机网络中的多路复用技术
    ActiveMQ之一--ActiveMQ入门
    ehcache介绍
    I/O模型之二:Linux IO模式及 select、poll、epoll详解
    【甘道夫】HBase(0.96以上版本号)过滤器Filter具体解释及实例代码
    Android Studio安装及主题字体配置
    HDU 2136 Largest prime factor 參考代码
    update更新两个字段
    Hadoop对小文件的解决方式
    赵雅智_ContentProvider
  • 原文地址:https://www.cnblogs.com/ArtofDesign/p/7290211.html
Copyright © 2011-2022 走看看