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

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

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

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

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

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

实例二: 了解finally的基本用法
在"实例一"的基础上,我们添加finally语句。 public class Demo2 {
public static void main(String[] args) {
try {
int i = 10/0;
System.out.println("i="+i);
} catch (ArithmeticException e) {
System.out.println("Caught Exception");
System.out.println("e.getMessage(): " + e.getMessage());
System.out.println("e.toString(): " + e.toString());
System.out.println("e.printStackTrace():");
e.printStackTrace();
} finally {
System.out.println("run finally");
}
}
}
运行结果: Caught Exception
e.getMessage(): / by zero
e.toString(): java.lang.ArithmeticException: / by zero
e.printStackTrace():
java.lang.ArithmeticException: / by zero
at Demo2.main(Demo2.java:6)
run finally 结果说明:最终执行了finally语句块。

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

实例三: 了解throws和throw的基本用法
throws是用于声明抛出的异常,而throw是用于抛出异常。
class MyException extends Exception {
public MyException() {}
public MyException(String msg) {
super(msg);
}
} public class Demo3 { public static void main(String[] args) {
try {
test();
} catch (MyException e) {
System.out.println("Catch My Exception");
e.printStackTrace();
}
}
public static void test() throws MyException{
try {
int i = 10/0;
System.out.println("i="+i);
} catch (ArithmeticException e) {
throw new MyException("This is MyException");
}
}
}
运行结果:
Catch My Exception
MyException: This is MyException
at Demo3.test(Demo3.java:24)
at Demo3.main(Demo3.java:13)
结果说明:MyException是继承于Exception的子类。test()的try语句块中产生ArithmeticException异常(除数为0),并在catch中捕获该异常;接着抛出MyException异常。main()方法对test()中抛出的MyException进行捕获处理。

最新文章

  1. ModernUI教程:目录 (完结)
  2. oj 1031 random permutation
  3. IOS视图旋转可放大缩小
  4. Linux系统下如何修改主机名
  5. hdu 3460
  6. 一个简单的php函数调用实例
  7. php随笔6-thinkphp OA系统 JS 实时显示当前时间
  8. 在ubuntu下设置eclipse开发STM32等嵌入式设备
  9. CascadeType
  10. 谷歌发布基于机器学习的Android APP安全检测系统:Google Play Protect
  11. 汇总一些知名的 JavaScript 开发开源项目
  12. jumpserver 堡垒机环境搭建(图文具体解释)
  13. Tomcat 快速入门
  14. sql 复习练习
  15. SIMPLE_DEV_PM_OPS宏
  16. cocos creator主程入门教程(六)—— 消息分发
  17. vi命令插入
  18. java基础知识—字符串
  19. Mac os 下brew的安装与使用—— Homebrew
  20. 深入理解nodejs的next函数。koa的使用 app.params的使用

热门文章

  1. layim和Gatewayworker组合的实时通讯
  2. 查看Python支持的.whl文件版本
  3. 利用Intent.ACTION_SEND进行分享
  4. Akka探索第一个例子by fsharp 1
  5. Spring课程 Spring入门篇 3-2 Spring bean装配(上)之bean的生命周期
  6. Windows和Linux执行Java代码的不同方式
  7. 减少服务器压力php生成静态xml文件
  8. ActiveMQ实例1--简单的发送和接收消息
  9. Kindeditor单独调用多图上传
  10. 《ArcGIS Runtime SDK for Android开发笔记》——(1)、Android Studio下载与安装