`
罗春桉
  • 浏览: 16638 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

基础总结<2>--异常框架

阅读更多
                          异常层次体系

一、异常的定义:所谓异常是指程序运行时出现的非正常情况。

二、异常的分类
                     Java中异常包括Exception和Error,它们都是Throwable的子类;
            Exception是指程序执行过程中意想不到的情况(用户程序能够捕捉到原因的异
            常情况),Exception类对象是Java程序处理或抛弃的对象;Error是指程序无
            法捕捉到的(具体原因)、无力处理的错误。

三、异常的处理
       异常的处理通过5个关键词来实现:try、catch、throw、throws和finally。
       如:
          try{}catch(Exception1 e1){//对Exception1的处理}
               catch(Exception2 e2){//对Exception2 e2的处理;throw(e);再抛
              出这个异常}finally{};       
1).注意:catch语句的排列顺序应该是从特别到一般。
2).其中:try试运行{}中的程序,catch捕获程序可能抛出的异常。
        throws:用于声明一个方法可能抛出异常,表明该方法不处理异常而选择抛出异
                 常。
        throw:明确地抛出一个异常对象,用来告知编译器此处要发生一个异常,程序会在
                throw语句处立即终止,转向try...catch寻找异常处理方法,不再执行
                throw后面的语句。
        finally:语句能指定一块代码。无论try所指定的程式块中抛弃或不抛弃例外,也
                 无论catch语句的例外类型是否和所抛弃的例外的类型一致,finally所
                 指定的代码都要被执行,他提供了统一的出口。通常在finally语句中能
                 进行资源的清除工作。如关闭打开的文件等。不管异常是否发生都会执行
                 finally中的语句。
3).按照产生的效果异常处理可分为积极的处理方式和消极处理方式:
   捕获异常(try-catch-finally)------积极的处理方式;
   抛出异常(throw语句)
   声明抛出异常(throws子句)--------消极的处理方式;

四、异常处理原则
1).能处理就早处理,抛出去还不能处理的就想法消化掉或者转换为RuntimeException处
   理。应该从程序开始就尽量控制异常发生的可能。
2).对于检查异常,如果不能行之有效的处理,还不如转为RuntimeException抛出。这样也
   让上层代码有选择的余地:可处理也可不处理。
3).对于一个应用系统来说,应该有一套自己的异常处理框架。这样当异常发生时,也能得到
   统一的处理风格,将优雅的异常信息反馈给用户。
                    
五、异常体系结构图
            
IOException 由于一般I/O故障而引起的,如读文件故障
FileNotFoundException 试图访问的文件不存在时产生
ArithmeticException 当出现异常算术条件时产生
NullPointerException 当应用程式企图使用需要的对象处为空时产生
ArrayIndexOutOfBoundsException 数组下标越界时产生
ArrayStoreException 当程式试图存储数组中错误的类型数据时产生
ClassCastException 类型转换错误
NumberFormatException 当把字符串转换为数值型数据失败时产生
OutOfMemoryException 内存不足时产生
SecurityException 当小应用程式(Applet)试图执行由于浏览器的安全设置而不允许的动作时产生
StackOverflowException 当系统的堆栈空间用完时产生
StringIndexOutOfBoundsException 当程式试图访问串中不存在的字符位置时产生
     
六、Error的原因
1).对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无
   法正常运行;
2).对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;
3).系统访问的外部资源出现异常情况。
解决方案:
1)访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作。
2)访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作。
3)尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程式的执行效率

七、Exception的典例及其解决方案
1)NullPointerException:
,解决方案:
为了确保进行操作或引用的对象非空,假若我们要对某对象进行操作或引用,我们首先去检查该对象是否已实例化且不为空;并且在系统中加入针对对象为空时情况的处理。
如:采用String对象保存用户提交的结果;在如果涉及对象的操作时,先检测其是否为空后,检查到对象为空后,可再选择进行以下任一种处理方式:
处理方式 1) 检查到对象为空时,设置对象值为空字符串或一个默认值;
处理方式 2) 检测到对象为空时,根本不执行某操作,直接跳转到其他处理中。
处理方式 3) 检查到对象为空时,提示用户操作有错误。
以上处理方法亦使用于其他异常的处理。检测到异常…
  • 大小: 34.3 KB
  • 描述: Throwable结构图
  • 大小: 40.6 KB
2
0
分享到:
评论

相关推荐

    SSM三大框架整合详细总结(Spring+SpringMVC+MyBatis).pdf

    ### SSM三大框架整合详细总结(Spring+SpringMVC+MyBatis) #### 一、基础知识概述 **Spring** - **定义与起源**:Spring框架是一个开源的轻量级Java开发框架,它最初由Rod Johnson在2003年创建。Spring框架的主要...

    ssh多对多基础框架搭建

    &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; ``` #### 四、Struts.xml配置 `struts.xml`是Struts2的核心配置文件,主要配置Action映射、拦截器等。 ```xml &lt;struts&gt; ...

    Struts框架基础包

    总结起来,"Struts框架基础包"包含了开发基于Struts的应用所需的所有基础组件,从MVC架构的支持到各种标签库,再到国际化、异常处理和插件扩展,全面覆盖了Web应用开发的各个环节。开发者需要理解并熟练掌握这些组件...

    Spring Boot整合Shiro搭建权限管理系统

    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;com.hellotomcat&lt;/groupId&gt; &lt;artifactId&gt;springboot-shiro&lt;/artifactId&gt; &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt; &lt;!-- 继承 spring boot 的默认父工程 --&gt; &lt;parent&gt;...

    struts1配置总结

    - `&lt;exception&gt;`:定义全局异常处理机制。 - `type`:异常类型。 - `path`:异常处理后的转发路径。 - 示例: ```xml &lt;global-exceptions&gt; &lt;exception type="java.lang.Exception" path="/error.jsp"/&gt; &lt;/...

    初学者入门:Structs中基本配置入门

    ### Struts基本配置入门详解 #### 一、概述 本文档旨在帮助初学者理解并掌握Struts框架的基本配置方法。...希望本文能够帮助初学者快速掌握Struts框架的基础配置知识,为后续的深入学习打下坚实的基础。

    Struts1基本配置

    &lt;load-on-startup&gt;2&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;action&lt;/servlet-name&gt; &lt;url-pattern&gt;*.do&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; ``` **3. Action配置** 在`struts-config...

    IDEA SpringMVC集成mybatis

    &lt;version&gt;2.x.x&lt;/version&gt; &lt;/dependency&gt; ``` 接下来,编写Mapper接口和对应的XML配置文件。Mapper接口位于`com.example.demo.mapper`包下,XML配置文件放在`src/main/resources/mapper`目录。例如: ```java // ...

    对java的一些总结<一>

    在“对Java的一些总结&lt;一&gt;”中,我们可以探索到Java编程语言的核心概念和关键特性。这篇博文可能涉及了Java的基础语法、类与对象、异常处理、多线程、垃圾回收以及常用工具的使用等方面。以下是对这些知识点的详细...

    SpringMVC课件

    ### SpringMVC基础知识与应用详解 #### SpringMVC概述 SpringMVC是Spring框架的一个重要组成部分,它提供了基于MVC(Model-View-Controller)设计模式的轻量级Web框架。自Spring 3.0版本之后,SpringMVC已经成为...

    SpringMVC入门

    &lt;servlet-name&gt;springmvc&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;init-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;...

    SpringMVC之表单提交===③===多文件上传表单

    &lt;version&gt;2.x.y&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; ``` `src`目录则是项目源代码的存放位置,通常包括`java`和`resources`子目录。`java`目录下存放Java类,如上面提到的`FileUploadController`;`...

    SSH框架搭建全解

    &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; ...

    SpringMVC入门程序

    &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;init-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;/...

    springboot学习笔记

    &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt; &lt;version&gt;4.3.7.RELEASE&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.jolbox&lt;/groupId&gt; &lt;artifactId&gt;bonecp-spring...

    使用axis在项目中开发WebService服务

    【使用Axis在项目中开发WebService服务】 在软件开发中,有时我们...然而,随着技术的发展,现代Web服务框架如Spring Boot和CXF提供了更强大、更灵活的功能,但Axis仍然是理解Web服务工作原理和学习基础的良好起点。

    SpringMVC项目一之项目搭建实现简单登录

    &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt; &lt;version&gt;5.3.23&lt;/version&gt; &lt;/dependency&gt; ``` 3. **配置Web.xml**:这是Web应用的部署描述符,我们需要配置...

    Spring Cloud微服务框架搭建(2).docx

    &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt; &lt;version&gt;3.8.1&lt;/version&gt; &lt;configuration&gt; &lt;source&gt;1.8&lt;/source&gt; &lt;target&gt;1.8&lt;/target&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; ``` ##### ...

Global site tag (gtag.js) - Google Analytics