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
        }
    }
  • 相关阅读:
    缓冲区溢出漏洞攻击原理
    过waf实战之文件上传bypass总结
    渗透-svn源代码泄露漏洞综合利用
    渗透-简单制作过waf的中国菜刀
    双链表
    Go语言(container学习)
    C语言 malloc函数详解
    GitHub搜索技巧
    HyperLogLog 算法的原理讲解以及 Redis 是如何应用它的
    【机器学习】K-近邻算法(KNN)
  • 原文地址:https://www.cnblogs.com/ArtofDesign/p/7290211.html
Copyright © 2011-2022 走看看