zoukankan      html  css  js  c++  java
  • 出现了异常,如何快速定位到错误代码

      java异常处理机制,一般形式为Try{} catch {} finally{},其中只有当Try代码块中出现了异常,才会跳转到catch代码块,而finally是无论如何都会执行的。

    第一种情况:

      Try

      {

      }

      catch(IOExcetion e)

      {

      }

      finally

      {

      }

      1.如果try代码块不出现异常,那么catch中的语句不会执行,当执行完finally代码块后,程序正常结束。

      2.出现try代码块异常,如果异常恰好是IOException或者是IOException的子类,那么会执行catch代码块,然后执行finally代码块,程序正常结束;

                 如果为其他异常而且不是IOException的子类,那么同样不会执行catch代码块,当执行完finally代码块,程序异常结束,并向外面抛出                                                未被捕捉到的异常。

    第二种情况

      程序运行时,日志打印中出现异常提示,是很正常的事情。例如在进行数据库查询时,如果发生异常,而你又希望程序继续执行,你要做的只要捕获这个异常即可。同时通常大家会将这个异常打印出来,虽然此时由于异常已经被处理,程序实际上在正常运行。

    第三种情况

      程序出错,但是并没有抛出相应异常。这种情况一般出现在出现运行时异常,例如空指针异常,虽然有异常捕捉语句,但是大多数都是针对不得不进行的非运行时异常捕获,所以很容易丢失异常出现的位置。比如在一个方法中出现了这种异常,在调用它的方法中才有可能报异常,这就导致了异常定位的困难。

    so

      程序出错,一般会报异常,所以第一件要做的事情就是定位异常出现的位置。

      1. 默认在调试时,会在后台打印出异常信息,以及出现异常的位置。大多数情况下可以帮助你定位到异常位置。

      2.如果定位到异常位置,发现该异常已经被捕获并处理,那么这就不是导致程序出错的异常位置。需要根据其他信息逐步定位到异常位置。

      3.程序出错,但是没有相关的异常信息提示,这时需要分析catch语句,逐步调试到异常代码段。

        例如,方法1和方法2都会抛出异常,但是确不会有异常信息提示。

    public class Test
    {
        public static void main(String[] args)
        {
            try
            {
                method1();
                method2();
            }
            catch (Exception e)
            {
                System.err.println("Exception!");
            }
        }
        
        private static void method1()
        {
            String str = null;
            System.out.println(str.length());
        }
        private static void method2()
        {
            int i= 1/0;
        }
    }

      

  • 相关阅读:
    BZOJ 3150 [Ctsc2013]猴子 ——期望DP 高斯消元
    BZOJ 4569 [Scoi2016]萌萌哒 ——ST表 并查集
    BZOJ 4590 [Shoi2015]自动刷题机 ——二分答案
    BZOJ 3462 DZY Loves Math II ——动态规划 组合数
    BZOJ 4827 [Shoi2017]分手是祝愿 ——期望DP
    BZOJ 4827 [Hnoi2017]礼物 ——FFT
    BZOJ 4826 [Hnoi2017]影魔 ——扫描线 单调栈
    ZOJ 3874 Permutation Graph ——分治 NTT
    UVA 12633 Super Rooks on Chessboard ——FFT
    HDU 2065 "红色病毒"问题 ——快速幂 生成函数
  • 原文地址:https://www.cnblogs.com/CanWork/p/3386997.html
Copyright © 2011-2022 走看看