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
        }
    }
  • 相关阅读:
    SQL注入攻击三部曲之进阶篇
    SQL注入攻击三部曲之入门篇
    父页面(JSP页面)传参数到子页面(JSP页面)
    Flex弹出窗口请求Action函数
    dojo表格分页插件报错
    堆栈溢出问题 调试到位置(test dword ptr [eax],eax ; probe page.)局部数组变量定义所分配的最大空间为1M
    改装的表格
    FusionCharts饼图中label值太长怎么解决
    dojo中的dojox/grid/EnhancedGrid表格报错
    dojo表格分页之各个参数代表的意义(一)
  • 原文地址:https://www.cnblogs.com/ArtofDesign/p/7290211.html
Copyright © 2011-2022 走看看