异常处理:http://cgs1999.iteye.com/blog/1547197(包含三种处理方式)
1,抛出
1,不包装直接抛出Exception会有系列堆栈信息,同时eclipse控制台也是如此
2,包装一层---用一个子类继承Exception,不会有堆栈信息只会有我们定义的文字信息,如截图红色框部分
2,定义全局的异常捕获器捕获处理
1,拦截器
2,配置文件
3,注解
示例(配置文件):
@Controller 层:
@RequestMapping("/account/tbCusPsdReset/update")
public ModelAndView updatePsd(TbCusFirm tbCusFirm,Model model) throws Exception {
Subject currentUser = SecurityUtils.getSubject();
Session session1 = currentUser.getSession();//currentUser
OpmUser user1=(OpmUser) session1.getAttribute("currentUser");
TbCusFirm use = new TbCusFirm();
if(!"".equals(tbCusFirm.getCustomerId())&&null!=tbCusFirm.getCustomerId()&&!"0".equals(tbCusFirm.getCustomerId())){
use.setCustomerId(tbCusFirm.getCustomerId());
use= tbConFirmFeeService.getCustomerInfo(use);
}
if(use==null){
throw new Exception("找不到你要重置的会员!");
}
if(!use.getMarketKey().equals(user1.getOrganid())&&!"100000".equals(user1.getOrganid())){
throw new ServiceException("您无权修改密码!");
//throw new Exception("您无权修改密码!");不包装直接抛出Exception会有系列堆栈信息,同时eclipse控制台也是如此
}
}
//由于bao
public Throwable fillInStackTrace() {
return this;
}由于包装的异常类中有这段代码所以不会把堆栈打出
配置文件
<!-- 总错误处理 http://fancyboy2050.iteye.com/blog/965663 -->
<bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!--<property name="exceptionAttribute" value="ex"></property> --> //jsp页面获取异常信息的变量默认是exception
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">404Exc</prop> //我们视图解析器下的jsp文件
<prop key="java.lang.Throwable">404Exc</prop>
</props>
</property>
<property name="statusCodes">
<props>
<prop key="500">500</prop>
<prop key="404">404</prop>
</props>
</property>
<property name="defaultErrorView">
<value>404</value>
</property>
<property name="defaultStatusCode">
<value>500</value>
</property>
<property name="warnLogCategory">
<value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver
</value>
</property>
</bean>
404Exc.jsp
<body>
你好
<%
Exception exception = (Exception) request.getAttribute("exception");
if (exception != null) {
out.print(exception+"\n");
for (StackTraceElement stackTraceElement: exception.getStackTrace()){
out.print(stackTraceElement.toString()+"\n");
}
}
%>
</div>
</body>
package com.esteel.dwz.framework.sys.exception;
/**
* 系统异常基础实现-checked Exception.<br/>
*
* 希望调用者对抛出的异常进行处理时,可以直接使用此异常或者使用此异常的子类.<br/>
*
* 系统中发生的异常, 都需要重新包装为 ServiceException&ServiceRuntimeException 或者其子类
*
* 实现这个异常的目的:<br/>
* 1.统一异常的父类,便于系统中对异常做统一处理.<br/>
* 2.复写fillInStackTrace 方法, 降低创建异常的开销.<br/>
* <br/>
* Error日志输出时机:<br/>
* 重新包装原始异常时, 进行日志输出<br/>
* <br/>
* 例如:<br/>
* <pre>
* try{
* ...
* }catch(XxxException e){
* logger.error(e);
* //重新包装, 进行日志输出
* throw new ServiceRuntimeException(e);
* }catch(ServiceException e2){
* //接收到ServiceException,不做重新包装, 不进行日志输出
* throw e2;
*
* }catch(Exception e1){
* //重新包装, 进行日志输出
* logger.error(e1);
* throw new ServiceRuntimeException(e1);
* }
* </pre>
*
*
* @author zhaozhl
*
*/
public class ServiceException extends Exception {
private static final long serialVersionUID = -6879298763723247455L;
public ServiceException() {
super();
}
public ServiceException(String message) {
super(message);
}
public ServiceException(Throwable cause) {
super(cause);
}
public ServiceException(String message, Throwable cause) {
super(message, cause);
}
public Throwable fillInStackTrace() {
return this;
}
}
同理事务的回滚:
1,@Service 抛出默认的运行时异常(可以配置为Exception)
2,
1,用注解
2,用配置文件
3,数据库引擎支持事务(mysql支持事务的引擎innerDb)
相关推荐
C#异常处理总结及简单实例 一、异常处理的理解? 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。 因此处理这种错误,就称为异常处理。 二、异常处理如何操作? C# 异常处理时建立在...
MySQL中的异常处理是数据库编程中不可或缺的一部分,它允许开发者预设对可能出现的错误或异常的响应,从而确保程序的稳定性和健壮性。在MySQL中,异常定义和处理主要是通过`DECLARE`语句来实现的。 1. **异常定义**...
异常处理是编程中的一种机制,用于捕获和处理运行时发生的错误或异常情况。异常可以由硬件引发,如硬件异常,也可以由操作系统或应用程序自身触发,即软件异常。当异常发生时,操作系统允许程序有机会检查异常类型并...
在易语言中,线程是并发执行的程序单位,线程结构异常处理是编程过程中非常重要的一环,因为线程可能会遇到各种异常情况,如内存访问错误、除零异常等。 线程结构异常处理源码是易语言中处理这些异常的关键部分。当...
Java 异常处理习题 Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出...
"New_SE_Handler"可能是一个新的结构化异常处理程序,结构化异常处理(SEH)是Windows操作系统中的一个特性,用于处理硬件和软件异常。 "GetSeAddr"可能是获取异常发生时的地址函数,这对于分析异常原因和定位问题...
在编程领域,异常处理是确保程序健壮性与稳定性的关键技术。对于C、C++以及基于MFC(Microsoft Foundation Classes)的开发来说,异常处理更是不可或缺的一部分。本篇文章将深入浅析C、C++中的异常处理机制以及MFC中...
详解 SpringCloud Finchley Gateway 统一异常处理 SpringCloud Finchley Gateway 统一异常处理是指在使用 SpringCloud Finchley 版本的 Gateway 时,如何统一处理系统级异常的方法。默认情况下,SpringCloud ...
【异常处理】是编程中必不可少的一个环节,尤其是在Java这样的面向对象语言中。异常处理机制使得程序在遇到错误时能够优雅地中断执行流程,提供错误信息,并有机会进行恢复操作,而不是简单地崩溃。以下是对异常处理...
异常处理是Java编程中至关重要的一个概念,它确保了程序在遇到错误或异常情况时能够以优雅的方式继续执行或者终止。下面是对Java异常处理机制的详细解析。 在Java中,异常是程序运行时发生的错误,它中断了正常的...
ARM处理器异常处理是指ARM微处理器对各种异常情况作出响应和处理的过程。异常指的是处理器在正常执行程序时遇到的特殊情况,例如外部中断请求、未对齐的内存访问错误、指令预取终止等。为了保证系统的稳定性和正确性...
在 PowerBuilder 9(简称 PB9)开发过程中,异常处理是一项关键的技术,它能帮助开发者有效地管理和解决程序中出现的错误,确保系统的稳定运行。在实际应用中,开发者经常会遇到各种预知和不可预知的问题,如系统级...
游标和异常处理 游标是 SQL 的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将...
《ADS异常处理详解》 异常处理是嵌入式系统中至关重要的部分,特别是在基于ARM架构的系统中。本文将深入探讨ARM处理器的异常处理机制,包括异常类型、处理流程、异常优先级以及向量表等内容。 一、异常类型 ARM...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本实验报告“java实验报告4-异常处理”旨在帮助初学者掌握Java中的异常处理机制,以及如何利用log4j进行日志...
React Native 异常处理库是专门为在React Native框架下开发的混合移动应用提供错误管理和调试支持的工具。React Native允许开发者使用JavaScript编写原生移动应用,但JavaScript代码的运行环境中可能会遇到各种错误...
### Spring Cloud Gateway全局异常处理详解 #### 一、引言 在微服务架构中,网关作为服务入口,承担着路由转发、限流熔断、鉴权认证等职责。Spring Cloud Gateway作为一款基于Spring Framework 5、Project Reactor...
课程作业,实现两数计算及其异常处理,异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。 Java中的异常可以是函数...