Runtime exception的问题

问题描述

搞不明白为什么会有这种exception。如果你写了一个runtime exception,然后在你的方法中throw这么一个exception。那么在方法级别是不会要求你在throws exception的。这样别人在调用你这个方法的时候也编译期是不知道你的方法中会抛出这个异常的,当在运行期抛出这个异常时会造成程序的终止。搞不明白为什么java会定义这种危险的东西。问题补充:两者的区别我也知道但是我说了 如果是调用别人jar包中的方法会抛出一个runtime exception,调用者是并不知道的,但是在运行期就会造成程序的崩溃。如何避免这个问题呢问题补充:前面写错了 应该是别人到代码里面会抛出一个runtime exception。但是我调用它方法的时候是无法知道代码中有非检查的异常抛出的。这个才是最郁闷的。

解决方案

引用如果你写了一个runtime exception,然后在你的方法中throw这么一个exception。 你不应该用RuntimeException的, 就算自己的代码抛了异常, 那抛的也应该是业务级别的异常[比如: 自定义一个异常来表示传递的值空或错误, 而不是一个NullPointerException ], 完全可以自定义一个其他业务级别的异常, 而不是Java底层的RuntimeException.所以: 上面的应该改成: 在代码里面catch了RuntimeException, 方法应该throw 一个 CustomBussinessException.假如在你调用的他人代码里面,别人throws了RuntimeException, 那你所能作的也只能是catch基类的Exception了. 你自己的代码再在finally里面清理现场.
解决方案二:
try{}catch(Exception ex){}你在调用别人的方法时候,可能会抛出RuntimeException,你可以通过try catch来捕捉呀.
解决方案三:
Java 提供了两种Exception 的模式,一种是执行的时候所产生的Exception (Runtime Exception),另外一种则是受控制的Exception (Checked Exception)。所有的Checked Exception 均从java.lang.Exception 继承而来,而Runtime Exception 则继承java.lang.RuntimeException 或java.lang.Error (实际上java.lang.RuntimeException 的上一层也是java.lang.Exception)。Checked Exception 中,并不表示这段程序码一定会收到CException,但它的用意在于提醒呼叫者,执行这个method 可能产生的意外,而使用者也必须要能针对这个意外做出相对应的处理方式。程序在执行的时候,也不见得会真的产生NullPointerException ,这种Exception 叫做runtime exception 也有人称为unchecked exception ,产生Runtime Exception 的method (在这个范例中是method2) 并不需要在宣告method 的时候定义它将会产生哪一种Exception 一般而言,Checked Exception 表示这个Exception 必须要被处理,也就是说程序设计者应该已经知道可能会收到某个Exception(因为要try catch住) ,所以程序设计者应该能针对这些不同的Checked Exception 做出不同的处理。  而Runtime Exception 通常会暗示着程序上的错误,这种错误会导致程序设计者无法处理,而造成程序无法继续执行下去。

时间: 2024-12-21 07:08:04

Runtime exception的问题的相关文章

谈谈Java:Checked Exception与Runtime Exception 的区别

Java里有个很重要的特色是Exception ,也就是说允许程序产生例外状况.而在学Java 的时候,我们也只知道Exception 的写法,却未必真能了解不同种类的Exception 的区别.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 首先,您应该知道的是Java 提供了两种Exception 的模式,一种是执行的时候所产生的Exception (Runtime

继续讨论Exception的处理

继续讨论Exception的处理   简述   用Java在开发系统的时候,Exception的处理往往是比较复杂的.如何处理开发中遇到的Exception,如何将合理的异常信息呈现给客户是开发人员必须要考虑的问题.   关于Exception的处理的文章在很多地方都可以看到,本文除了做一个总结之外,还将结合Design by Contract,JDK 1.4引入的assertion,以及如何用Spring的AOP处理Exception做进一步的探讨.   Exception的分类   从JDK

Microsoft Visual C++ and Win32 structured exception handling

Introduction In an earlier article [1] I described some performance measurements when using exceptions in various languages on Windows. A couple of people since then have asked me questions about how the windows exception model actually works and how

How a C++ compiler implements exception handling

Introduction One of the revolutionary features of C++ over traditional languages is its support for exception handling. It provides a very good alternative to traditional techniques of error handling which are often inadequate and error-prone. The cl

JAVA程序员面试32问 选择自 liujun999999 的 Blog (本人做收藏)

程序|程序员 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统). 第四,&和&&的区别. 第五,HashMap和Hashtable的区别. 第六,Collection 和 Collec

Java 面试中的陷阱

自己也面试了很多家公司,觉得这些对今后的学习和工作非常有帮助. 总结的一些知识点非常有代表性.以下是正文. --------------------------------------------------------------------------------------------- 找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试是没

捕获线程中的异常

由于线程的本质特性,使得你不能捕获从线程中逃逸的异常.一旦异常逃出任务的run()方法它就会向外传播到控制台,除非你采取特殊的步骤捕获这种错误的异常.在Java SE5之前,你可以使用线程组来捕捉这种异常,但是有了Java SE5,就可以用Executor来解决这个问题了. 下面的任务总是会抛出一个异常,该异常会传播到其run()方法的外部,并且main()展示了当你运行它时所发生的事情: ? 1 2 3 4 5 6 7 8 9 10 11 12 import java.util.concurr

Mockito 简明教程

Mock 测试是单元测试的重要方法之一.本文介绍了基于 Java 语言的 Mock 测试框架 -- Mockito 的使用. 什么是 Mock 测试 Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法. Mock 最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者

【最近面试遇到的一些问题】运行时异常与一般异常有何异同

Throwable 是所有 Java 程序中错误处理的父类 ,有两种资类: Error 和 Exception .    Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息. Exception :表示可恢复的例外,这是可捕捉到的. Java 提供了两类主要的异常 :runtime exception 和 checked exception . check