针对Java Web应用中错误异常处理方法的运用

在javaweb中其异常都需要对Checked Exception之下的Exception进行继承,并且有选择地对发生的错误和异常进行处理。Java同样也提供了抛出异常、捕捉异常和finally语句的使用来处理程序异常,下面就来具体看一下Java中的异常处理用法及其架构和使用建议:

  1. Java异常是Java提供的一种识别及响应错误的一致性机制。
  2. Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。
  3. Java异常机制用到的几个关键字:trycatchfinallythrowthrows
关键字 说明
try 用于监听将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
catch 用于捕获异常。catch用来捕获try语句块中发生的异常。
finally finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
throw 用于抛出异常。
throws 用在方法签名中,用于声明该方法可能抛出的异常。

实例一: 了解try和catch基本用法:

  1. public class Demo1 {
  2. public static void main(String[] args) {
  3. try {
  4. int i = 10/0;
  5. System.out.println("i="+i);
  6. } catch (ArithmeticException e) {
  7. System.out.println("Caught Exception");
  8. System.out.println("e.getMessage(): " + e.getMessage());
  9. System.out.println("e.toString(): " + e.toString());
  10. System.out.println("e.printStackTrace():");
  11. e.printStackTrace();
  12. }
  13. }
  14. }
  15. 运行结果:
  16. Caught Exception
  17. e.getMessage(): / by zero
  18. e.toString(): java.lang.ArithmeticException: / by zero
  19. e.printStackTrace():
  20. java.lang.ArithmeticException: / by zero
  21. at Demo1.main(Demo1.java:6)
  22. 结果说明:
  23. try语句块中有除数为0的操作,该操作会抛出java.lang.ArithmeticException异常。通过catch,对该异常进行捕获。
  24. 观察结果我们发现,并没有执行System.out.println("i="+i)。这说明try语句块发生异常之后,try语句块中的剩余内容就不会再被执行了。

实例二: 了解finally的基本用法:

  1. 实例二: 了解finally的基本用法
  2. "实例一"的基础上,我们添加finally语句。
  3. public class Demo2 {
  4. public static void main(String[] args) {
  5. try {
  6. int i = 10/0;
  7. System.out.println("i="+i);
  8. } catch (ArithmeticException e) {
  9. System.out.println("Caught Exception");
  10. System.out.println("e.getMessage(): " + e.getMessage());
  11. System.out.println("e.toString(): " + e.toString());
  12. System.out.println("e.printStackTrace():");
  13. e.printStackTrace();
  14. } finally {
  15. System.out.println("run finally");
  16. }
  17. }
  18. }
  19. 运行结果:
  20. Caught Exception
  21. e.getMessage(): / by zero
  22. e.toString(): java.lang.ArithmeticException: / by zero
  23. e.printStackTrace():
  24. java.lang.ArithmeticException: / by zero
  25. at Demo2.main(Demo2.java:6)
  26. run finally
  27. 结果说明:最终执行了finally语句块。

实例三: 了解throws和throw的基本用法

  1. 实例三: 了解throwsthrow的基本用法
  2. throws是用于声明抛出的异常,而throw是用于抛出异常。
  3. class MyException extends Exception {
  4. public MyException() {}
  5. public MyException(String msg) {
  6. super(msg);
  7. }
  8. }
  9. public class Demo3 {
  10. public static void main(String[] args) {
  11. try {
  12. test();
  13. } catch (MyException e) {
  14. System.out.println("Catch My Exception");
  15. e.printStackTrace();
  16. }
  17. }
  18. public static void test() throws MyException{
  19. try {
  20. int i = 10/0;
  21. System.out.println("i="+i);
  22. } catch (ArithmeticException e) {
  23. throw new MyException("This is MyException");
  24. }
  25. }
  26. }
  27. 运行结果:
  28. Catch My Exception
  29. MyException: This is MyException
  30. at Demo3.test(Demo3.java:24)
  31. at Demo3.main(Demo3.java:13)
  32. 结果说明:MyException是继承于Exception的子类。test()的try语句块中产生ArithmeticException异常(除数为0),并在catch中捕获该异常;接着抛出MyException异常。main()方法对test()中抛出的MyException进行捕获处理。

2017.10.28 针对Java Web应用中错误异常处理方法的运用的更多相关文章

  1. web应用中的异常处理

    楼主前几天写了一篇“Java子线程中的异常处理(通用)”文章,介绍了在多线程环境下3种通用的异常处理方法. 但是平时大家的工作一般是基于开发框架进行的(比如Spring MVC,或Spring Boo ...

  2. 在Java Web程序中使用监听器可以通过以下两种方法

    之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...

  3. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  4. 在Java Web项目中添加定时任务

    在Java Web程序中加入定时任务,这里介绍两种方式:1.使用监听器注入:2.使用Spring注解@Scheduled注入. 推荐使用第二种形式. 一.使用监听器注入 ①:创建监听器类: impor ...

  5. Java Web开发中路径问题小结

     Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...

  6. java web 项目中 简单定时器实现 Timer

    java web 项目中 简单定时器实现 Timer 标签: Java定时器 2016-01-14 17:28 7070人阅读 评论(0) 收藏 举报  分类: JAVA(24)  版权声明:本文为博 ...

  7. Java Web 开发中路径相关问题小结

    Java Web开发中路径问题小结 (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 Eclipse中目录结构如图2所示: 图2 那么针对这个站点的几个基本概 ...

  8. Java Web开发中MVC设计模式简介

    一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...

  9. linux 下用renameTo方法修改java web项目中文件夹名称问题

    经测试,在Linux环境中安装tomcat,然后启动其中的项目,在项目中使用java.io.File.renameTo(File dest)方法可行. 之前在本地运行代码可以修改,然后传到Linux服 ...

随机推荐

  1. CESM部署安装环境和使用

    平台信息 Description: CentOS Linux release 7.6.1810 (Core) 安装CESM 安装前提:(小提示:耗时较长,需要耐心)阅读原文 CentOS 7(检查:s ...

  2. 3d Max 2013安装失败怎样卸载3dsmax?错误提示某些产品无法安装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  3. 错误 chamfermatching.cpp:969:30: error: the compiler can assume that the address of ‘annotate_img’

    修改 ./build/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make文件,删掉-Werror=address,然后重新make

  4. (转)python 列表与元组的操作简介

    python 列表与元组的操作简介 原文:https://www.cnblogs.com/QG-whz/p/4782809.html 阅读目录 列表 list函数 列表的基本操作 列表方法 元组 tu ...

  5. spring boot基本认识

    大家眼中的spring boot:https://www.zhihu.com/question/39483566-------------------------------------------- ...

  6. pat1002. A+B for Polynomials (25)

    1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...

  7. 虚拟机复制操作CentOS6导致eth0转为eth0以至于网络服务启动失败的解决方案

    CentOS6复制到虚拟机中eth0转为了eth1 原因: CentOS6硬盘上的信息保存着操作系统的信息, 将该硬盘上的信息拷贝到另一开新的硬盘上时, 硬件的环境就会一定会发生变化, 就那网卡来首, ...

  8. Devexpress Xtrareport 并排报表

    什么是并排报表呢? 按照我个人理解:并排报表是把两张或者两张以上的报表,放在一个报表页面. 注:为了方便,本示例使用同一个数据源,但是您可以使用相同的方法,而在一个报表文档中显示两个完全不同的 (使用 ...

  9. Git提交代码到主分区

    git 提交代码,本地新建一个my分支,不从本地master分支直接上传,而是先从本地my分支上提交至本地master分支,然后本地master提交至远程master分支 上.前提是远程只有一个mas ...

  10. 深入理解mvc 一系列收藏

    http://www.cnblogs.com/P_Chou/archive/2010/11/01/1866605.html