`
小贾
  • 浏览: 5676 次
  • 性别: Icon_minigender_1
  • 来自: 山东
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

问个底层的问题:RuntimeException

阅读更多
最近用springMVC+ibatis搞一个东西;在开发中碰到了一个问题:
/**
 *查询所有货品信息
 */
public List getGoods()
         {
		try
		{
			return this.goodsDao.findTotal();
		} catch (RuntimeException e)
		{
			log.error(e);
			throw e;
		}
	}

使用上面这种写法是正常的;
但是如果采用
/**
 *查询所有货品信息
 */
public List getGoods()
         {
		try
		{
			return this.goodsDao.findTotal();
		} catch (Exception e)
		{
			log.error(e);
		}
	}

这样写为什么就会报错?说该方法没有返回值;有那位对异常处理熟悉,给讲一下上面的错误和RuntimeException的具体应用吧!谢谢!
分享到:
评论
11 楼 WorkingHard?! 2007-01-16  
运行时的异常可以不进行处理,而exception则必须进行处理,也就是在进行调用的时候需要用try catch块进行包裹。
10 楼 小贾 2006-10-31  
dada 写道
小贾 写道

老兄,我的第一种写法是正确的;我只是想弄懂如果仅使用Exception时,该怎么操作!看来我还是老老实实去看API吧!

第一种写法也说不上正确,捕捉一个runtimeexception没有任何包装就throw,那为什么捕捉?


我在调用方法中还有处理,只是没有把所有代码贴出来!
9 楼 dada 2006-10-30  
小贾 写道

老兄,我的第一种写法是正确的;我只是想弄懂如果仅使用Exception时,该怎么操作!看来我还是老老实实去看API吧!

第一种写法也说不上正确,捕捉一个runtimeexception没有任何包装就throw,那为什么捕捉?
8 楼 jacshan 2006-10-30  
在方法定义的时候声明不处理异常就行了吧
  public List getGoods()throws Exception{
  .....
  }
看了以下api
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。
所以你的第一种做法不会有错误,而用Exception就要进行声明了
  呵呵!不知道对不对

7 楼 小贾 2006-10-30  
ddandyy 写道
这完全是两个不同的问题
前一个是因为方法没有返回值
后一个是因为Exception

不知道你的业务是什么  在这catch这东西是为了要打log么  从代码上看估计是的

具体怎么改要看的业务到底要做到什么程度了

至于说后一个异常是为什么  我想你可以看看javadoc

public class Exception

The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch.



public class RuntimeException

RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine.
A method is not required to declare in its throws clause any subclasses of RuntimeException that might be thrown during the execution of the method but not caught.



老兄,我的第一种写法是正确的;我只是想弄懂如果仅使用Exception时,该怎么操作!看来我还是老老实实去看API吧!
6 楼 ddandyy 2006-10-30  
这完全是两个不同的问题
前一个是因为方法没有返回值
后一个是因为Exception

不知道你的业务是什么  在这catch这东西是为了要打log么  从代码上看估计是的

具体怎么改要看的业务到底要做到什么程度了

至于说后一个异常是为什么  我想你可以看看javadoc

public class Exception

The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch.



public class RuntimeException

RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine.
A method is not required to declare in its throws clause any subclasses of RuntimeException that might be thrown during the execution of the method but not caught.

5 楼 小贾 2006-10-30  
ddandyy 写道
谁说Exception不能有throw  报错么? 你试过了?

仔细看看你那两个东西   除了catch的Exception的类型不同外  还有哪里不一样
不一样的东西  你就对比  那你得出的结论是正确的么


呵呵!我没说Exception不能有throw,我说添上throw还是报错(说我没处理异常);我肯定是试过了才这么说!
4 楼 ddandyy 2006-10-30  
谁说Exception不能有throw  报错么? 你试过了?

仔细看看你那两个东西   除了catch的Exception的类型不同外  还有哪里不一样
不一样的东西  你就对比  那你得出的结论是正确的么
3 楼 小贾 2006-10-30  
ddandyy 写道
和你的Exception类型无关
是那句 throw e; 的问题


那么,用Exception 时就不能有throw了啊?还是和RuntimeException相关啊!有更好的解决方法吗?
2 楼 rtdb 2006-10-30  
你CATCH完了,程序接着往下走,
自动结束,没有返回一个List,
编译器当然报“没有返回值”的错误。
1 楼 ddandyy 2006-10-30  
和你的Exception类型无关
是那句 throw e; 的问题

相关推荐

    数据库底层开闭封装

    "数据库底层开闭封装"是一个最佳实践,旨在优化数据库访问,提高代码的可维护性和可重用性。本篇文章将深入探讨这一概念,并结合Java和MySQL环境进行详细阐述。 首先,"数据库底层开闭封装"是指将数据库连接的创建...

    JAVA高手MD5加密算法底层源码完美实现

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的信息映射为固定长度的输出,通常是一个128位的二进制数,以32位十六进制数的形式表示。在JAVA中,MD5主要用于数据的校验和密码的...

    HttpClient4.x手动释放底层HTTP连接[借鉴].pdf

    下面是一个手动释放底层HTTP连接的示例代码: ```java public class ClientConnectionRelease { public final static void main(String[] args) throws Exception { HttpClient httpclient = new ...

    dubbox-2.8.4

    - **监控中心**:提供了一套完善的监控体系,可以实时监控服务的运行状态,便于问题定位和性能优化。 - **负载均衡策略**:包含多种负载均衡算法,如随机、轮询、权重等,可以根据实际业务需求选择合适的策略。 2...

    Java中异常打印输出的常见方法总结

    Error是Java体系中定义为不可控制的问题,往往用来描述系统错误或者底层的问题,而Exception一般发生在应用层,即在由项目中的Java代码层面引发的问题。 Exception中的运行时异常(RuntimeException)和受控异常...

    Java面试题-完整版.pdf

    + RuntimeException:是运行时异常,运行时由Java虚拟机生成的例外,编译期不检查 + 场景:NullPointerException、 NumberFormatException、 IndexOutOfBoundsException、 ClassCastException、...

    SimpleJava.pdf

    - **FileReader与InputStreamReader**:底层读取字符流的实现。 - **FileReader与FileInputStream**:分别用于读取字符流和字节流。 - **性能考量**:针对大文件和小文件的不同选择。 #### 25. Java向文件写入代码...

    Hibernate底层数据库操作函数BaseDao+具体实例

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。`BaseDao`是常见的一种设计模式,用于封装Hibernate的基本数据库...

    java异常机制研究

    - 另外,对于数据库操作等底层异常,可以通过DAO层进行捕获并转换成自定义异常,这样可以使上层代码更加关注业务逻辑而非具体的异常类型。 #### 四、最佳实践 - **避免过度捕获**:不要在没有明确处理策略的情况...

    feilong开发工具库.rar

    经过多个版本迭代,已经逐步走向稳定 二、FEILONG-CORE介绍 1. 简介: 让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简炼,易写、易读、易于维护; 2. FEILONG-CORE 优点: 使用 feilong-core 的理由...

    Java API中的异常类体系框架捕捉及详解.docx

    `Error`类代表了程序无法恢复的严重问题,如虚拟机错误或线程死锁,这类问题通常不能由应用程序本身处理,而是需要开发者分析并修复程序的底层问题。而`Exception`类则包含了大部分程序在运行时可能遇到的问题,如...

    Java NIO 主要类和方法(Java NIO中文版 附录C)

    这两个类都继承自RuntimeException,分别在缓冲区溢出和下溢时抛出。缓冲区溢出是指试图将更多的数据写入已满的缓冲区,而下溢是指在缓冲区为空时尝试读取数据。 ByteBuffer类(C.1.4): ByteBuffer是Buffer类的一...

    java基础难点-更新版

    Java 基础知识点总结 Java 基础学习难点是一系列重要的知识点,掌握这些知识点对于 Java ...掌握这些 Java 基础知识点对于 Java 开发者来说非常重要,可以帮助开发者更好地编写 Java 代码,并解决实际开发中的问题。

    JAVA 面试题

    Java面试题涵盖了Java编程语言和相关技术栈中常被问到的知识点,以下是从标题和部分内容中提炼出来的详细知识点。 **基础知识点** 1. **String编码UTF-8和GBK的区别:** UTF-8是一种针对Unicode的可变长度字符编码...

    spring事务配置

    - 回滚规则:任何未捕获的`RuntimeException`将导致事务回滚,而`Exception`(checked异常)则不会。 4. **自定义事务属性**:`@Transactional`注解提供了多个属性来覆盖默认设置,包括: - `propagation`:用于...

    java jdk 实例宝典源码

    这些源码对于深入理解Java语言的底层运作机制、优化代码以及解决实际问题有着不可估量的价值。下面,我们将详细探讨Java JDK源码中的关键知识点。 1. **基础类库**: - **Object类**:所有Java类的根类,包含了如`...

    Java面试题.docx

    - 底层实现是链表和数组的组合,JDK 8 之后引入红黑树优化,当链表长度超过一定阈值时转为红黑树。 - 实现了 Map 接口的所有方法。 3. **Java 虚拟机内存模型**: - 包括方法区、Java 堆、Java 栈、本地方法栈。...

    JAVA核心技术

    - **面向过程**:通过一系列的过程或函数来解决问题,主要关注问题解决的步骤。 ##### 6.2 对象的概念 - **对象**:类的实例,拥有状态(属性)和行为(方法)。 - **类**:对象的蓝图,定义了一组共同属性和方法。...

Global site tag (gtag.js) - Google Analytics