1、java异常标准

在java中,Throwable这个类是所有异常或错误的父类。Throwable可以分为两种类型:

error:表示编译时和系统错误,除特殊情况外,一般不用担心

exception:可以被抛出的类型,在java类库、用户方法以及运行时故障中都可能抛出Exception异常。

RuntimeException:通过名字可以知道是程序运行过程中出现的异常。属于运行时异常的类型有很多,它们会自动被java虚拟机抛出,并且这些异常都继承了RuntimeException。通过继承RuntimeException,使它们构成了一组具有相同特征和行为的异常类型。并且也不再需要在异常说明中声明方法将抛出RuntimeException类型的异常(或者任何从RuntimeException继承的异常),这些异常被称为"不受检查异常"。

2、使用finally进行清理

对于一些代码,可能会希望无论try块中的异常是否抛出,它们都能得到执行。这通常适用于内存回收之外的情况(因为内存回收由垃圾回收器完成),为了达到这个效果,可以在异常处理程序后面加上finally子句。finally非常重要,它能使程序员保证:无论try块里发生了什么,内存总能得到释放。当要把除内存之外的资源恢复到它们的初始状态时,就要用到finally子句。

下面我们来看一些使用finally的例子

1 public classTestException2 {2 public static voidmain(String[] args) {3 System.out.println(f(1));4 }5 public static int f(inti){6 try{7 if(i == 1) {8 throw newFourException();9 }10 }catch(FourException e){11 System.out.println("four");12 }finally{13 System.out.println("finally");14 }15 returni;16 }17 }18 class FourException extends Exception{}

通过上面代码我们可以看出虽然在try块里面抛出了异常,但是finally中的代码还是得到了执行。

1 public classTestFinally {2 public static voidmain(String[] args) {3 int value =returnNumber();4 System.out.println(value);5 }6

7 public static intreturnNumber(){8 try{9 System.out.println("try 内容");10 return 3;11 }catch(Exception e){12 e.printStackTrace();13 }finally{14 System.out.println("finally");15 return 2;16 }17 }18 }

使用finally虽然可以清理一些不用的资源,但是千万不能在finally中执行return,如果执行return的话,最后的结果可能和我们想要得到的结果会大不一样

3、总结

我们应该在以下情况下使用异常

(1)、在恰当的级别处理问题(在知道该如何处理的情况下才捕获异常)

(2)、解决问题并且重新调用产生异常的方法

(3)、进行少许修补,然后绕过异常发生的地方继续执行

(4)、用别的数据进行计算,以代替方法预计会返回的值

(5)、把当前运行环境下能做的事尽量做完,然后把相同的异常抛到更高层

(6)、把当前运行环境下能做的事尽量做完,然后把不同的异常抛到更高层

(7)、终止程序

(8)、进行简化(如果你的异常模式使问题变得太复杂,那用起来会非常痛苦也很烦人)

(9)、让类库和程序更安全(既是为调试做短期投资,也是在为程序的健壮性做长期投资)

异常是java程序设计不可分割的一部分,异常处理的优点之一就是使得你可以在某处集中精力处理你要解决的问题,而在另一处处理你编写的这段代码中产生的错误。

java通过异常处理错误_java 通过异常处理错误相关推荐

  1. java 程序运行出错_java 程序运行错误怎么办?

    展开全部 看是发生了什么错误,大多数错误都可以通过改写原编码来解决. 程序的错误可以抽象分为三32313133353236313431303231363533e78988e69d83313333656 ...

  2. java 批量处理 示例_Java中异常处理的示例

    java 批量处理 示例 Here, we will analyse some exception handling codes, to better understand the concepts. ...

  3. java异常处理封装_Java统一异常处理(配置文件集中化定义)

    0.前言 无论任何项目,都避免不了在运行期间出现的一些异常,并伴随着因业务逻辑的需要而给出相应的提示,使得系统变得更加友好,这类提示处理,我们统称为异常处理(exceptiona handling). ...

  4. java exception 行号_java日志记录错误的文件_方法_行号_报错信息

    1.java日志记录错误的文件.方法.行号.报错信息 StackTraceElement s= e.getStackTrace()[0]; 1.1.记录保存的文件s.getFileName() 1.2 ...

  5. java异常处理机制_Java的异常处理机制

    Throwable 类是 Java 语言中所有错误或异常的超类.只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java 的 throw 语句抛出.类似地,只有此类或其子类之 ...

  6. java base64解码出错_Java Base64解码错误及解决方法

    问题提出: 自己在做一个小网站充当练手,但是前端图片经过base64加密后传往后端在解码.但是一直都有问题,请大神赐教 public static string base64toimg(string ...

  7. java程序错误类型及异常处理

    本文转载至:http://www.cnblogs.com/liaoliao/ 一.程序的错误类型 在程序设计中,无论规模是大是小,错误总是难免的.程序的设计很少有能够一次完成,没有错误的(不是指Hel ...

  8. PHP如何进行错误与异常处理(PHP7中的异常处理和之前版本异常处理的区别)

    PHP如何进行错误与异常处理(PHP7中的异常处理和之前版本异常处理的区别) 一.总结 一句话总结: throwable接口+Error类 在PHP7更新中有一条:更多的Error变为可捕获的Exce ...

  9. java 常见 错误_JAVA几个常见错误简析

    JAVA几个常见错误简析 Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的.下面就来和小编一起看看JAVA几个常见 ...

最新文章

  1. java注解的执行顺序_深入理解Spring的@Order注解和Ordered接口
  2. 终于明白 Java 为什么要加 final 关键字了!
  3. java 注解报错_java注解验证接收参数 返回注解字段的错误
  4. JVM调优:GC标记清除回收算法
  5. [Windows Phone 7]开发分享图片的插件(2)
  6. redis-cluster
  7. 关于以太网PAUSE的一点研究
  8. 给初创业者的几点建议
  9. PYTHON莫名其妙的崩溃
  10. tinyhttpd源码分析
  11. .md文件的打开与软件---markdown
  12. hdu 1560 DNA sequence(IDA*)
  13. excel熵值法计算权重_由搜索权重排序引入的思考
  14. dev、test和prod是什么意思?
  15. Docker搭建内部知识库(Wiki)
  16. 基于fpga的直流电机vhdl+论文+开题报告+(csdn免费下载)
  17. 信息时代,书香更宜人
  18. 【好网】通信专业的大四研一研二看看:以求职经验教你选择导师专业和科研方向...
  19. centos7 安装Kong和Konga
  20. 亚太成为第一季度全球存储市场唯一增长地区;亚马逊云科技在中国区域推出Amazon ECS Anywhere | 全球TMT...

热门文章

  1. latex在algorithm环境或表格中插入圆圈脚注
  2. 求只有2,3,5组成的第n小个数字
  3. 创建springboot多模块项目
  4. 研究一个新的功能的时候,如何获取该资源的文档
  5. synchronized(this)用法
  6. 200 计算机网络之物理层思维导图小结
  7. 2.2.2 操作系统之进程调度的时机(主动放弃与被动放弃)、切换与过程(广义与狭义)、方式(非剥夺与剥夺)
  8. pythontkinter控件单选框怎么判断是否被选中_Python GUI编程(Tkinter)Radiobutton单选框控件...
  9. DNS 流程说明以及相关问题的解析
  10. Linux / TCPIP / 判断 client 已经关闭的方法