• 出现了异常,如何快速定位到错误代码


      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;
        }
    }

      

  • 相关阅读:
    python学习笔记之小小购物车
    TestNg学习一
    网监利器镜像——原理配置篇
    改变人生的31个黄金思维
    培养人脉的106个技巧
    CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看这里!—-揭秘令牌桶
    请别浪费你30岁前的时光,职场“35岁现象”
    VRRP主备备份配置示例—实现网关冗余备份
    关于JS的prototype
    使用 Bootstrap Typeahead 组件
  • 原文地址:https://www.cnblogs.com/CanWork/p/3386997.html
Copyright © 2020-2023  润新知