JSP用Throwable做日志记录

源码解析logback日志输出异常堆栈 logback如何打印异常堆栈 打印错误日志的正确姿势 如何打印异常堆栈 logback中怎么样才能打印异常堆栈信息 阅读详情

    思想很简单,就是用一个实现Throwable接口的类来完成记录操作。
    比如,我们可以在制做底层类的时候,有的项目需要记录所有的操作,有的项目只要记录错误操作就可以,而有的项目不需要记录任何信息,我们怎么处理呢?
    我们可以让它抛出一个异常给上层对象,同样,我们也可以构造一个描述正确操作的可抛出对象。这样,上层对象捕捉到它就会很容易地选择应该做的操作了。
    以下是我的一个程序片断。

 public int setpassword(String newpwd,Parameter param){
  String sql = "update `user` set `password` = '" + MD5.toString(param.account,newpwd) + "' where (`id` = '" + param.id + "' or `account` = '" + param.account + "') and " +
     "(`password` = '" + MD5.toString(param.account,param.password) + "' or `passkey` = '" + param.passkey + "' or `answer` = '" + param.answer + ")";
  try{
   super.dbc.execute(sql);
  }catch(CatException e){
   errord(e);
   return Parameter.CATRETURN_UNKNOW;
  }catch(CatSuccess e){
   record(e);
   return Parameter.CATRETURN_SUCCESS;
  }
  return Parameter.CATRETURN_UNKNOW;
 }
在实例名为dbc的对象执行SQL语句时,如果成功,就会抛出一个CatException对象,这样,这个设置用户密码的上层函数接到dbc抛出的CatException就可以用record函数将它记录下来了。这里的record函数是定义在一个接口中的,下面是这个接口的代码。
package Doudya.util;

/**
 * @name Doudya.util.itfRecorder
 * @author Doudya
 * 用于日常记录及错误的记录
 */
public interface itfRecorder {
/**
 * @function 用于记录日常操作
 * @parameter
 * Doudya.util.CatSuccess e 正确操作的操作对象。
 */
    public void record(CatSuccess e);
/**
 * @function 用于记录异常操作
 * @parameter
 * Doudya.util.CatException e 错误操作的操作对象。
 */
    public boolean errord(CatException e);
}
这里我写的CatSuccess和CatException只是很普通的继承于Throwable类的概念。下面为新手展示一下抛出的操作。

/**
 * @function 执行SQL语句。
 * @parameter
 *   String user 操作用户。
 *   com.java.dbc.itfDBC dbc 连接数据库的接口。
 * @throw
 *   CatSuccess 正确操作描述对象
 *   CatException 错误对象
 */
 public void execute(String sql) throws CatException,CatSuccess{
  try{
   synchronized(dbc){
    dbc.getStatement().execute(sql);
   }
   throw(new CatSuccess(user,NAME,"execute", "[SQL=" + sql + "]"));
  }catch(Exception e){
   throw(new CatException(user, NAME, "execute", "[SQL=" + sql + "]", e));
  }catch(CatException e){
   throw(e);
  }
 }

上面这个就是DBC类的execute方法。正确操作和错误操作就是通过throw和throws来抛出的。解释一下,因为这个DBC里的小dbc是另一个接口的方法,是直接连接数据库的一个实例,它也抛出CatException异常,所以我需要把它直接传递,而不是再次构造,这样是为了更清楚地表现出来。
    可以看到,我的这种异常处理的方法很麻烦,但它的功能我想还是很强大的,起码对于初学Java的朋友还是有一些帮助的。

JSP+Servlet 项目实战:从 BaseServlet 到 Filter 的 4 层异常处理与日志方案 本文详细介绍了基于JSP+Servlet技术栈的企业级异常处理与日志方案,从BaseServlet到Filter构建四层异常处理架构,结合Log4j2实现专业日志记录。通过实战案例展示如何提升学生信息管理系统的健壮性和可维护性,涵盖异常分类、日志分级、全局捕获等核心内容,为JavaWeb开发提供完整解决方案。 阅读详情

相关推荐

Spring Boot+Vue+MySQL全栈项目实战:从CRUD到工程化思维的跃迁

在Web开发领域,增删改查(CRUD)是构建业务系统的核心基础操作,其背后涉及数据持久化、业务逻辑处理与用户交互的完整链路。理解CRUD的实现原理,关键在于掌握如何通过分层架构、前后端分离与数据库设计,将基础操作转化为稳定、可维护的工程化代码。这一过程的技术价值在于,它帮助开发者从“功能实现”跨越到“工程实现”,形成系统的全栈开发能力。典型的应用场景包括各类管理系统、后台Admin等企业级应用。本文以Spring Boot + Vue + MySQL技术栈为例,通过一个完整的管理系统项目,深入剖析如何基于C

weixin_30455023的博客 321

Java异常体系及异常处理

目录目录 一 Throwable 异常 二捕获处理异常 异常的处理 方式一捕获处理 方式二抛出异常 三自定义异常类 四 运行时异常编译时异常 五finally块 一、 Throwable (异常)我们的java程序也是会存在某些不正常 的情况的,这些不正常的 情况我们就统称异常。异常体系:——–| Throwable 超类————| Error 子类————| Exception

黑码哥的技术博客 1743

Java Servlet Filter 原理与生产级实战:从请求拦截到链式控制

Servlet Filter 是 Java Web 请求处理流水线的核心组件,其本质是基于责任链模式的容器级拦截机制,运行在 DispatcherServlet 之前,可捕获所有 HTTP 请求(含静态资源、转发、错误页等)。它通过 init/doFilter/destroy 三阶段管理生命周期,依赖 dispatcherTypes 控制触发时机,依靠 filter chain 顺序决定执行逻辑。技术价值在于统一处理跨域、字符编码、日志、权限等横切关注点,避免业务代码污染。典型应用场景包括中文乱码治理、To

weixin_34290631的博客 343

日志规范

简介日志记录的目的1).对程序运行情况进行记录和监控2).在必要是可详细了解程序的内部运行状态3).记录RPC调用请求响应,以便排除夸系统访问问题。5).支持分布式日志收集,以便在分布式部署中能集中查看和分析日志6).对系统行影响尽量小“ java 日志框架选择1)log4j2)log4j23)logback 为了飞马眼的flume插件不用维护多份,统一使用log4j2进行日志打印 日志级别1

学以笔记,笨鸟先飞. 677

Java EE工程实战:从类加载隔离到JTA事务的生产级避坑指南

Java EE不是Java语法的延伸,而是运行在Servlet容器中的企业级规范体系。它通过类加载隔离保障模块独立性,依托生命周期托管实现资源自动回收,并借助JNDI上下文绑定统一管理数据源等外部依赖。其技术价值在于支撑高并发、可伸缩、可维护的Web服务,典型应用场景包括电商订单系统、金融支付网关和SaaS多租户平台。深入理解ClassLoader机制、Servlet线程模型与JTA分布式事务原理,是跨越‘能写代码’到‘能扛流量’的关键断层。本文聚焦真实项目中高频出现的ClassNotFoundExcept

weixin_33696106的博客 469

Java深入解析篇七之异常处理

Java 中所有异常和错误的根类是 ,它有两个直接子类: 和 。 1.2 Throwable 核心方法 1.3 Throwable 构造器 二、Checked Exception vs Unchecked Exception 2.1 核心区别 特性 Checked Exception Unchecked Exception 继承关系 Exception 的非 RuntimeException 子类 RuntimeException 及其子类 编译期检查 必须捕获或声明抛出 无强制要

萧瑟余晖的博客 309

打日志:无论有多少个参数,只要最后一个多余的参数是 Throwable类型的,就会在最后追加Exception的具体信息

打日志

落霞与孤鹜齐飞,秋水共长天一色。 387

jsp实现日志

jsp实现的日志功能 链接数据库sqlserver具有增删改查功能 学习借鉴的好工具

slf4j如何打印java异常堆栈信息throwable对象

slf4j如何打印java异常堆栈信息throwable对象

nobody 2万+

MoveIt避坑指南:UR机械臂编程中常见的5个错误及解决方法

本文针对UR机械臂与MoveIt集成开发中的常见问题,总结了五个典型错误及其解决方案,包括关节限位设置、坐标系混淆、规划器选择、运动学求解器配置以及线程资源管理。重点分析了正逆运动学求解错误的原因,并提供了调整容忍度、显式指定坐标系、选择合适规划器及优化IK配置等实用代码示例,帮助开发者提升编程效率与系统稳定性。

root9的博客 434

时间同步中 TOD 与GPRMC和IRIG-B的区别

时间同步中 TOD 与GPRMC和IRIG-B的区别

ftdlk的博客 1726

jsp错误页面打印日志

其实没什么可以记载的。只是当时头晕,一直犯晕,故记录下来,防止再次犯晕。 系统中配置的错误页500.jsp。有需求是在该jsp中记录错误日志信息,当时调用了后台封装的一个组合Exception信息的方法: public static String getStackTraceMessage(Exception e){ String message=""; message+=e

yichenlian的专栏 2835

linux应用程序段错误调试

一、堆、栈 在分析段错误之前,先了解一下什么是堆?什么是栈? 堆:一般由开发者分配释放,如果没有释放,程序结束时,在有的OS中可能会被自动释放,分配方式类似于链表。堆的操作方式为,队列优先,先进先出的原则。 栈:由操作系统自动分配,存放函数的参数值,局部变量。栈的操作方式为,先进后出的原则。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。  PUSH:操作在堆栈的顶部加入一个元素...

农村种地人 1111

javaEE servlet以及jsp 异常处理

在servlet或者jsp运行的过程中,会出现一些异常,当这些异常在程序当中没有进行处理时,就会显示一个默认的异常 页面,这可不是一件美妙的事情。因为容器默认的异常页面会显示一些异常的相关信息,这些信息对于程序员来说, 是调试的好帮手;可是对于最终用户来说,那无异于天书,那我们怎么在出现一些异常信息的时候,让程序跳转到我 们期望跳转的页面呢?我们来看servlet和jsp当中异常的处理。 ...

iteye_8785的博客 317

别再瞎调了!手把手教你搞定STM32步进电机PID速度环(附完整代码与比例系数详解)

本文详细解析了STM32步进电机PID速度环的完整实现过程,从算法输出到脉冲频率的转换链路,重点讲解了比例系数的确定方法及系统标定实验。通过完整的代码示例和调试技巧,帮助工程师解决实际应用中的常见问题,提升步进电机控制精度与稳定性。

weixin_28729331的博客 214

碳化硅外延层厚度测量:红外干涉光谱与FFT技术详解

薄膜厚度测量是半导体制造中的关键工艺控制环节,其核心原理基于光的干涉现象。当光在薄膜上下界面反射并叠加时,会产生与厚度相关的干涉条纹。通过分析这些条纹,可以非接触、无损地获取薄膜的精确厚度信息。这项技术的核心价值在于实现了对关键工艺参数的在线、快速监控,对于提升器件性能与生产良率至关重要。在第三代半导体,尤其是碳化硅功率器件的制造中,外延层厚度直接决定了器件的击穿电压和导通电阻等核心性能。红外干涉光谱法因其对碳化硅材料在红外波段的良好透过性,成为该领域主流的厚度测量方案。通过快速傅里叶变换(FFT)对采集到

weixin_29032489的博客 308

怎么获得异常的详细信息 printStackTrace

我们在捕捉到程序异常时,可以使用e.printStackTrace();来输出详细的信息来分析异常。 但是很多时候我们不只是在终端查看,我们会希望将异常的详细信息得到,然后再做一些展示 比如写到日志文件中,在jsp页面中展示等。 那么我们怎么才能获得和e.printStackTrace();这种详细的信息呢。 当然一般的e.getMessage();是不能令我们满意的。下面记录一个比较好的...

weixin_30364325的博客 252

期货缠论实战:文华财经笔中枢指标公式解析与博易大师应用指南

本文深入解析期货缠论实战中的文华财经笔中枢指标公式及其在博易大师平台的应用技巧。详细介绍了笔中枢指标的核心逻辑、公式拆解、参数设置及多周期联合作战策略,帮助交易者提升市场分析能力与交易胜率。特别适合期货交易者学习缠论指标的实际应用。

weixin_42522552的博客 357

java安全编程标准笔记(四)

java安全编程标准笔记(四)一、异常行为1. 记录日志时应避免异常简介违反规则代码示例一问题说明符合规则的实例一2.在方法失败时恢复对象先前的状态简介3.不要在finally程序段非正常退出简介不符合规则的代码示例4.不要在finally程序段中遗漏可检查异常简介不符合规则的代码示例符合规则的代码示例5.不要抛出RuntimeException、Exception或Throwable简介6.禁止非受信代码终止jvm简介 一、异常行为 1. 记录日志时应避免异常 简介   如果没有考虑到写入日志时发生异常的

weixin_40563850的博客 602

24位ADC的精度陷阱:为什么你的ADS1232实测性能不达标?

本文深入探讨了24位ADC芯片ADS1232在实际应用中性能不达标的原因,揭示了高精度ADC性能依赖周边电路设计的关键问题。通过分析电源系统、参考电压稳定性、PCB布局等常见陷阱,提供了优化方案和调试技巧,帮助工程师充分发挥ADS1232的潜力,实现接近理论值的测量精度。

weixin_28285943的博客 407

站在评审的角度写国自然基金本子,搭配这5条AI提示词,帮你一键提升本子中标率

多数同仁的选题失败,不是因为你的idea不好,而是你的逻辑没有立起来,你必须让评审看到,你是怎么从问题走向方法的。请你按照“同行做到哪、瓶颈卡在哪、我该怎么破”的逻辑,将我的创新点进行重构:【粘贴你原始的创新点描述】,要求:表达需结构化、可量化、可验证,突出对比后的实质性突破。与其等着评审指出问题,等着本子被拒,不如让AI提前模拟评审,帮你从可行性、创新性、国家价值、团队能力四个维度给你打分,并指出项目的致命破绽,提示词这样设计。创新点如果写不好,本子往往也会被拒,而评审一般喜欢的创新点都是有固定结构的。

智能AI让学术科研更容易 1239

java异常的捕获与抛出原则

转自:http://tanghaidi.iteye.com/blog/490142 在可能会出现exception的地方,要使用try-catch或者throws或者两者都要。我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-catch掉这个exception;如果希望外部知道,则在catch到之后把exception直接抛出或

傻明Light 3445

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java:获取异常的堆栈信息

做的java开发的时候,经常会遇到代码抛异常后,需要把异常信息保存到数据库或者上传到云服务器做缓存分析。这时候就需要获取异常的堆栈信息(详细错误信息)。人有的用e.getMessage()来电子杂志异常信息,但是这样获取到的信息内容并不全,而且有时候为空。我们可以用下面方法来获取。 public static String getStackTrace(Throwable throwable) ...

nature_fly088的专栏 7913

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

2026最新Java八股文(完整版)

单个redis节点的并发能力是有限的,所以为了提高并发能力,我们需要搭建redis集群,就比如:主从复制。主从复制的流程主从复制主要分为:全量同步和增量同步。全量同步:在salve请求数据同步的时候会携带application Id和offset,如果master判断出applid和自己的不一样,就认为slave是第一次进行同步,所以会进行全量同步。

Ostkakah的博客 4万+

2026年Java工程师就业路线图:零基础到精通实战指南

Java作为企业级应用开发的核心语言,其学习路径的规划直接影响学习效率和就业竞争力。理解Java面向对象编程、集合框架、多线程等核心概念是构建扎实基础的起点。这些原理支撑着现代企业级应用的高效运行与并发处理。掌握Spring Boot、MyBatis-Plus等主流框架,能显著提升开发效率,实现快速构建稳健的后端服务。在分布式架构成为主流的今天,学习微服务、Redis缓存、消息队列等技术,对于构建高可用、可扩展的系统至关重要。本文聚焦Java学习路径,针对初学者常见的路线混乱、理论与实践脱节等问题,提供一套

weixin_33863087的博客 465

Spring系列——两万字长文教会你Spring (超详细!!!)

到此,我们学习完了 Spring 框架,包括: Spring 体系结构 Spring Bean Spring AOP Spring JDBC Spring 事务管理 写此文章是为了做个笔记,等以后自己忘记了可以回头快速上手。同时也分享给小伙伴们,希望我们都能越来越好,不会就学 B 站,不懂就问 AI,总好过自己两耳不闻窗外事的独自琢磨。 最后认识一下吧,笔者叫`北迁`,hhh~~。

weixin_63009611的博客 1181
上一篇: 纯C下用ODBC访问数据库(实例)
下一篇: IO Stack Location
moomee
博客等级 码龄20年 6粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值