`

异常处理

 
阅读更多

                                                                            异常处理 

1、异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能出现的异常,是程序员编程错误造成的。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

 

2、error和Exception的区别

         java异常结构中定义有Throwable类,Exception和error是其派生出的两个子类。其中Exception表示由于网络故障,文件损坏,设备错误,用户输入非法等情况导致的异常。而error表示java运行时环境出现的错误,入JVM内存资源耗尽。

3、常见的Runtime Exception

          NullPointerException 空指针(引用)引发的异常

          NumberFormatException:数据格式转换出现问题时出现此异常。

          ClassCastException:强制类型转换类型不匹配时出现此异常。

          ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。

          ArithmeticException:数学运行错误时出现此异常

4异常类的继承体系

                                   |-----AWTError

                 |--------Error---|-----IOError

                 |                 |------ThreadDeath

Throwable ---|                 |------LinkageError

                 |                              |---------SQLException

                 |----------Exception--------|---------IOException              |------IndexOutOfBoundsException

                                                |---------RuntimeException------|------NullPointerException

                                                                                       |-------ClassCastException

java的异常可分为可检测异常,非检测异常,自定义异常

     可检测异常:经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,不捕捉这个异常,编译器就通不过不允许编译。

     非检测异常:不遵循处理或声明规则。在产生此类异常时不一定非要采取任何适当操作,编译器不会检查是否已经解决类这样一个异常。RuntimeException也属于非检测异常

     自定义异常:是为了表示应用程序的一些错误类型,为代码可能发生的一些或多个问题提供新含义。

 

4、访问异常信息

      >getMessage(); 返回该异常的详细描述字符串

      >printStackTrace( ); 将该异常的跟踪栈信息输出到标准错误输出

      >printStackTrace(PrintStream s); 将该异常的跟踪栈信息输出到指定输出流

      >getStackTrace( ); 返回该异常的跟踪栈信息

5、使用throws声明抛出异常

      throws声明抛出只能在方法签名中使用,throws可以声明抛出多个异常类,之间以逗号隔开

语法格式: throws ExceptionClass1, ExceptionClass2...

一旦使用throws语句声明抛出该异常,程序就无须使用try...catch块来捕获异常了

6、使用throw抛出异常

      如果需要在程序中自行抛出异常,应使用throw语句,可以单独使用,throw语句抛出的不是异常类,而是一个实例,而且每次只能抛出一个异常实例。

语法格式: throw ExceptionInstance;

7、异常处理规(1)不要过度使用异常(2)不要使用过于庞大的try块(3)避免使用CatchAll语句

(4)不要忽略捕获到的异常

8、自定义异常类

     用户自定义异常类都应该继承Exception基类,如果自定义Runtime异常,应继承RuntimeException基类。

     定义异常类是通常需要提供两种构造器:一个是无参数的构造器,另一个是带以字符串参数的构造器,这个字符串将作为该异常对象的详细说明(也就是异常对象getMessage方法的返回值)

catch和throw同时使用

      在实际应用中,当一个异常出现是,单靠某个方法无法完全处理该异常,必须有几个方法协作才可完全处理该异常。也就是说,异常出现的当前方法中,程序只对异常进行部分处理,还有些方法需要在该方法的调用者中才能完成,所以应该再次抛出异常,这样就可以让该方法的调用这也能捕获到异常。这种情形可以通过在catch块中结合throw来完成。

9、try语句

       try{......}语句指定类一段代码,该代码就是一次捕获并处理例外的范围,在执行过程中,该代码可能会产生并抛出一种或几种类型的异常对象,后面的catch语句分别对这些异常作相应的处理。如果没有例外发生,所有的catch代码段被忽略过不执行。

10、catch语句

在catch语句块中用如下方法获取信息

getMessage(); printStackTrace( );

11、finally块

      fianlly语句为异常处理提供一个统一的出口,使得在控制流程转到程序其他部分以前,能够对程序的状态做统一的管理,无论try所指定的程序块中是否抛出例外,fianlly所指定的代码都要被执行。

通常在finally语句中可以进行资源的消除工作,如关闭打开的文件,删除临时文件等。

分享到:
评论

相关推荐

    Spring Cloud Gateway的全局异常处理

    Spring Cloud Gateway的全局异常处理 Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求。 网关都是给接口做...

    C#异常处理总结及简单实例

    C#异常处理总结及简单实例 一、异常处理的理解? 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。 因此处理这种错误,就称为异常处理。 二、异常处理如何操作? C# 异常处理时建立在...

    异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt

    异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt异常处理.ppt

    两数计算+异常处理

    课程作业,实现两数计算及其异常处理,异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。 Java中的异常可以是函数...

    精讲RestTemplate自定义请求失败异常处理.docx

    在开始进行自定义的异常处理逻辑之前,我们有必要看一下异常处理的默认实现。也就是:为什么会产生上面小节提到的现象? ResponseErrorHandler是RestTemplate请求结果的异常处理器接口 o接口的第一个方法hasError...

    异常处理 异常处理 异常处理

    关于异常处理的word文档 关于异常处理的word文档 关于异常处理的word文档

    Springboot全局异常处理demo.zip

    Springboot全局异常处理demo 项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的...

    MySQL定义异常和异常处理详解

    主要为大家详细介绍了MySQL定义异常和异常处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    C和C++中的异常处理

    2. Microsoft 对异常处理方法的扩展 3. 标准 C++异常处理的基本语法和语义 4. 实例剖析 EH 5. C++的 new 和 delete 操作时的异常处理 6. Microsoft 对于的实现版本中的异常处理 7. 部分构造及 placement delete 8. ...

    C++ 异常处理 C++ 异常处理

    C++ 异常处理 C++ 异常处理C++ 异常处理C++ 异常处理C++ 异常处理C++ 异常处理C++ 异常处理C++ 异常处理

    java异常处理java异常处理

    java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理java异常处理

    c/vc++/MFC异常处理/结构化异常处理 浅析

    c/vc++/结构化异常处理 浅析 C语言异常处理 C++语言异常处理 异常处理函数 MFC异常处理 结构化异常处理

    spingmvc+mybatis+统一异常处理机制

    统一异常处理会区分前端是否ajax请求,自动返回json数据格式,要求开发人员在处理ajax请求时统一封装成一个对象返回,以符合代码统一规范。 此工程在idea环境编写,导入请自己新建工程手工复制代码导入。

    ADS异常处理.pptADS异常处理.pptADS异常处理.ppt

    ADS异常处理.pptADS异常处理.pptADS异常处理.ppt

    ARM异常处理机制ARM异常处理机制

    ARM异常处理机制ARM异常处理机制ARM异常处理机制ARM异常处理机制ARM异常处理机制ARM异常处理机制ARM异常处理机制ARM异常处理机制ARM异常处理机制

    详解SpringCloud Finchley Gateway 统一异常处理

    主要介绍了详解SpringCloud Finchley Gateway 统一异常处理,非常具有实用价值,需要的朋友可以参考下

    工作流系统异常处理实现方法

    中的异常处理问题显得尤为突出[1-3]。传统上将异常处理包含于正常流程中的方法不仅不能 有效的处理各类异常,同时使得整个系统流程复杂化;而完全的人工参与也使得异常处理过 程效率低下,形式极不规范。所以,工作...

    第7章 java异常处理

    第7章 java异常处理

    SQLserver存储过程异常处理.txt

    SQLserver存储过程异常处理

    异常处理机制知识点小总结

    这是自己通过看书对java异常处理的一些总结

Global site tag (gtag.js) - Google Analytics