JavaEE异常

本章讲讲在javaEE项目中的异常处理

  在javaEE项目中,异常处理,日志记录,权限控制是基本的功能需求,所以在项目开始阶段就设计好这些对整个项目的开发是很有必要的。今天我们就一起探讨一下javaEE中的异常处理机制。先来看看java中的异常图:

          

   在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。
       Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。

Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。

Exception(异常):是程序本身可以处理的异常。

Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。

注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。

通常,Java的异常(包括Exception和Error)分为可查的异常(checked exceptions)和不可查的异常(unchecked exceptions)

运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
       非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。

javavEE项目异常处理机制思想

  现在基本上所有的javaEE项目都有分层的概念了(MVC)

时间: 2024-10-22 15:23:29

JavaEE异常的相关文章

JavaEE(7) - JMS消息事务和异常

1. 使用事务性Session为消息增加事务(NetBeans创建java project: TxSession) MessageSender.java package lee; import javax.jms.*; import javax.naming.*; import java.util.Properties; public class MessageSender { public void sendMessage() throws NamingException, JMSExcept

JavaEE基础(十九)/异常和File

1.异常(异常的概述和分类) A:异常的概述 异常就是Java程序在运行过程中出现的错误. B:异常的分类 通过API查看Throwable Error 服务器宕机,数据库崩溃等 Exception C:异常的继承体系 Throwable Error Exception RuntimeException 2.异常(JVM默认是如何处理异常的) A:JVM默认是如何处理异常的 main函数收到这个问题时,有两种处理方式: a:自己将该问题处理,然后继续运行 b:自己没有针对的处理方式,只有交给调用

JavaEE SSH框架整合(三) struts2 异常、http错误状态码处理

struts2的action可能出现访问不到,或action报异常等情况,所以需要作一些处理,给用户一个友好的印象. 1. 异常处理  result声明在action中 <action name="book_*" class="com.stone.action.BookAction" method="{1}"> <result name="{1}" type="dispatcher">

resin启动报错:guava-15.0.jar!/META-INF/beans.xml:5: &lt;beans xmlns=&quot;http://xmlns.jcp.org/xml/ns/javaee&quot;&gt; is an unexpected top-level tag. 异常

项目完成,经过本地的测试,最后在部署的时候,发现服务器resin启动失败,报错信息如下: 从报错信息上看,应该是guava.jar有问题. 排查问题 查看项目引入的guava.jar,信息如下: boneco.jar引入了子包guava-15.0.jar,cache-client.jar引入了guava-18.0.jar. 所以不难明白,guava-15.0.jar肯定不能兼容guava-18.0.jar!但是guava-18.0.jar肯定兼容guava-15.0.jar,所以需要保证项目中引

javaEE的jsp在处理异常的错误的方法

首相有两种一个是java里的 try{ }catch() { } 第二种是 Error message: <% out.println('.........'); %> 例如: <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <%@page isErrorPage =  "true" %> &

2015从头开始配置Hibernate-------Hibernate异常集锦

Eclipse不像是MyEclipse,它的Hibernate的使用需要进行从头配置.配置的基本方法就是把相应的jar包复制到WEB-INF/lib目录下.这些jar包,我是从 "http://ncu.dl.sourceforge.net/project/hibernate/hibernate3/3.6.10.Final/hibernate-distribution-3.6.10.Final-dist.zip" 这个地址下载的. 在"hibernate-distributio

JavaEE学习之Spring aop

一.基本概念 AOP——Aspect-Oriented Programming,面向切面编程,它是spring框架的一个重要组成部分.一般的业务逻辑都有先后关系,我们可以理解为纵向关系,而AOP关注的是横向关系,每一个关注点可以理解为一个横切面.例如我们的大部分代码都会涉及到日志记录,很多的数据库操作都会涉及到事务的创建和提交.那么从横向关注这些逻辑,他们都一个个的切面. AOP技术的具体实现,可以通过动态代理技术或者是在程序编译期间进行静态的"织入"方式.AOP经常使用的场景包括:日

使用JavaEE的ServerAuthModule模块和web.xml进行相应配置,实现对用户的权限控制

ServerAuthModule这里不细说,可以自行百度. 重点在注释: <!-- 给web-app划分角色 --> <security-role> <role-name>spx.main</role-name> </security-role> <security-role> <role-name>spx.user</role-name> </security-role> <!-- 只有配置

JavaEE中的依赖性——依赖查找

关于依赖性管理我们要介绍的第一个策略就是依赖查找(dependency lookup).这种策略是JavaEE中传统形式的依赖性管理,这里可以看到JavaEE规范中的JNDI(Java Naming andDirectoryInterface)的身影.从名字就可以看出来这里解决依赖性是通过查找的方式. 就像上篇文章提到的,所要引用的资源是通过一对name与target对应的注解标识的.name用来表明此资源被依赖时候的名字,所以当资源注解放在类定义之上的时候需要为其起个名字.但是如果资源注解放在