`

throw和throws

 
阅读更多
throws是用来声明一个方法可能抛出的所有异常信息
throw则是指抛出的一个具体的异常类型。

通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。

throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;
throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。

如果在方法中会有异常被抛出而你又不希望在这个方法体内对此异常进行处理,可以使用throws在声明方法的时候同时声明他可能会跑出的异常。比如:


public void go() throws SQLException{
      ...
      Connection conn = ds.getConnection();
      ...
}

本来ds.getConnection()将可能会抛出SQLException,但现在使用throws 在方法名处声明了,所以在方法体中就不需要 try/catch 块来处理SQLException 了

throws语句
throws用来标明一个成员函数可能抛出的各种"异常"。对大多数Exception子类来说,Java编译器会强迫你声明在一个成员函数中抛出的"异常"的类型。如果"异常"的类型是Error或RuntimeException,或它们的子类,这个规则不起作用,因为这copy;在程序 的正常部分中是不期待出现的。如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。这就重新定义了成员函数的定义语法:type method-name(arg-list) throws exception-list { }下面是一段程序,它抛出了一个"异常", 但既没有捕捉它,也没有用throws来声明。这在编译时将不会通过。


class ThrowsDemo1 {
        static void procedure( ) {

        System.out.println("inside procedure");
        throw new IllegalAccessException("demo");
       }
        public static void main(String args[]) {
        procedure( );
       }
}

为了让这个例子编译过去,我们需要声明成员函数procedure抛出了
IllegalAccessException,并且在调用它的成员函数main里捕捉它。下面是正确的例 子:

class ThrowsDemo{

   static void procedure( ) throws IllegalAccessException {
        System.out.println("inside procedure");
        throw new IllegalAccessException("demo");
      }

  public static void main(String args[]) {
      try  {
            procedure( );
      }
      catch (IllegalAccessException e) {
            System.out.println("caught " + e);
      }
  }


下面是输出结果: C:\>java ThrowsDemo inside procedure caught
java.lang.IllegalAccessException: demo

1.两者位置不同.
2.对异常处理方式不同.throws对异常不处理,谁调用谁处理,throws的Exception的取值范围要大于方法内部异常的最大范围,而cathch的范围又要大于throws的Exception的范围;throw 主动抛出自定义异常类对象.
3.throws抛出的是类,throw抛出的是对象.

转载原文:http://leomodo.iteye.com/blog/321191
分享到:
评论

相关推荐

    简单了解Java关键字throw和throws的区别

    Java关键字throw和throws的区别 Java是一种面向对象的编程语言,具有强大且灵活的特性。其中,throw和throws是两个重要的关键字,经常被用来处理异常情况。然而,许多初学者却对这两个关键字的区别感到困惑。下面,...

    throw和throws关键字的区别.xmind

    throw和throws关键字的区别

    Java软件开发实战 Java基础与案例开发详解 10-4 使用throw和throws引发异常 共5页.pdf

    ### Java软件开发实战:使用throw和throws引发异常 #### 1. Java异常处理基础 在Java编程中,异常处理是一项非常重要的技术,用于处理程序运行过程中可能出现的各种异常情况。异常处理主要包括异常的捕获、处理...

    基于Java中throw和throws的区别(详解)

    基于Java中throw和throws的区别详解 在Java编程语言中,throw和throws是两个常用的关键字,用于处理异常和错误。但是,很多新手程序员对这两个关键字的区别不是很清楚。今天,小编将为大家详细解释throw和throws的...

    java处理异常的机制关键字throw和throws使用解析

    throws和throw关键字都是Java语言中非常重要的机制关键字,它们可以用来处理异常,但它们之间存在着明显的区别。 throws关键字是用来声明方法可能会抛出的异常类型的,而throw关键字是用来抛出一个异常类型的。

    详解Java异常处理中throw与throws关键字的用法区别

    在Java中,异常处理主要通过try-catch-finally结构来实现,而在异常处理中,`throw` 和 `throws` 关键字起着关键作用。它们虽然都与异常抛出有关,但使用方式和含义有所不同。 `throw` 关键字用于在代码中明确地抛...

    Java throw和throws使用区别分析

    在Java编程语言中,`throw`和`throws`都是用于处理异常的重要关键字,但它们的用法和功能有所不同。理解这两个关键字的区别对于编写健壮的Java程序至关重要。 首先,我们来了解一下异常的基本概念。在Java中,异常...

    详解Java编程中throw和throws子句的使用方法

    在Java编程中,异常处理是不可或缺的一部分,而`throw`和`throws`子句是Java异常处理的关键元素。本文将详细解析这两个关键字的使用方法。 首先,`throw`语句用于在代码中主动抛出一个异常。当你检测到程序运行过程...

    使用异常处理程序错误和logj记录错误PPT学习教案.pptx

    本PPT学习教案主要讲解了Java中异常处理机制的概念、try、catch、finally语句的使用、throw和throws关键字的区别、log4j日志记录异常等内容。 一、什么是常量? 在Java中,常量是指不能被改变的值,例如数字、字符...

    throws与throw的区别

    在Java编程中,throws和throw是兩個與异常处理相關的关键字,虽然它们都是用于处理异常的,但它们的使用场景和语法不同。下面我们将详细解释throws和throw的區別。 throws throws是方法抛出一个异常的声明,用于告...

    throws与throw区别

    在Java编程语言中,异常...- 正确使用`throws`和`throw`可以帮助开发者更好地控制异常流,增强程序的健壯性和可维护性。 理解这两个关键字的区别及其在异常处理中的角色对于编写健壯、可靠的Java应用程序至关重要。

    《Java语言程序设计》答案.pdf

    本资源提供了 Java 语言程序设计的答案,涵盖了多态性、方法的重载和覆盖、throw/throws 的关系和区别、final 和 finally 的区别和作用等知识点。 一、多态性 多态性是指允许不同类的对象对统一消息做出响应。多态...

    JAVA基础第6章异常处理机制_练习题_200910[借鉴].pdf

    本资源是关于JAVA基础第6章异常处理机制的练习题,涵盖了异常处理机制的基本概念、try-catch-finally语句、throw和throws关键字、自定义异常类等知识点。 1. 异常处理机制的基本概念 异常是指程序在执行过程中出现...

    黑马入学基础测试

    throw和throws有什么区别 try catch finally分别在什么情况下使用 求1000 的结果中包含多少个0 注:1000 1×2×3×4×5× ×999×1000 编写程序 打印1到100之内的整数 但数字中包含7的要跳过 例如:17 27 71 72 ...

    java期末考试试题及答案-彩色版.pdf

    * throw和throws关键字:throw和throws关键字的使用、throw和throws关键字的优点和缺点 4. Java多线程编程: * 多线程的概念:多线程的定义、多线程的优点和缺点 * Thread类:Thread类的使用、Thread类的方法和...

    使用异常处理程序错误和log4j记录错误PPT学习教案.pptx

    throw 和 throws throw 用于手动抛出异常,而 throws 用于声明方法可能要抛出的各种异常。 Log4j 记录错误 Log4j 是一个流行的日志记录工具,可以用于记录程序中的错误信息。在本PPT文件中,我们学习了如何使用Log4...

    throw的详细用法.doc

    5. **throw 和 throws 的区别**: - `throw` 用于在方法体内抛出一个具体的异常实例。 - `throws` 用于在方法签名中声明该方法可能会抛出的异常,这样调用者就需要处理这些异常。 6. **异常链**: 在Java中,...

    Java异常处理-throw手动抛出异常对象

    描述Java中的异常处理机制,并解释try、catch、finally、throw和throws关键字的作用。 2. 举例说明何时应该手动抛出异常,何时应该使用系统自动抛出的异常。 3. 分析以下代码片段,指出其中的异常处理问题,并提出...

    java异常的捕获及处理

    在本篇文章中,我们将详细介绍 Java 异常的捕获及处理机制,包括异常的定义、异常的产生原因、异常的标准使用方式、throw 和 throws 关键字的作用、异常处理语句的使用等。 一、异常的定义 异常是指在程序执行过程...

    JAVA学习Java集合框架.pptx

    throw和throws是Java中用于异常处理的两个关键字。throw语句用于抛出异常,而throws语句用于声明方法可能抛出的异常。throw语句通常用于方法体中,用于抛出异常,而throws语句通常用于方法声明中,用于声明可能抛出...

Global site tag (gtag.js) - Google Analytics