`
cakin24
  • 浏览: 1388618 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java中catch和throw同时使用

    博客分类:
  • java
阅读更多

一应用背景
        在实际应用中,处理异常往往需要更加复杂的处理——当一个异常出现时,单靠某个方法无法完全处理该异常,必须由几个方法协作才能完全处理该异常,也就是说,在异常出现的当前方法中,程序只能对异常进行部分处理,还有些处理需要在方法的调用者中才能完成,所以应该再次抛出异常,让该方法的调用者也能捕获到异常。
        为了实现这种通过多个方法协作处理同一异常的情形,可以catch块中结合throw语句来完成。

二应用举例
1 代码示例

AuctionTest.java

public class AuctionTest
{
	private double initPrice = 30.0;
	// 因为该方法中显式抛出了AuctionException异常,
	// 所以此处需要声明抛出AuctionException异常
	public void bid(String bidPrice)
		throws AuctionException
	{
		double d = 0.0;
		try
		{
			d = Double.parseDouble(bidPrice);
		}
		catch (Exception e)
		{
			// 此处完成本方法中可以对异常执行的修复处理,
			// 此处仅仅是在控制台打印异常跟踪栈信息。
			e.printStackTrace();
			// 再次抛出自定义异常
			throw new AuctionException("竞拍价必须是数值,"
				+ "不能包含其他字符!");
		}
		if (initPrice > d)
		{
			throw new AuctionException("竞拍价比起拍价低,"
				+ "不允许竞拍!");
		}
		initPrice = d;
	}
	public static void main(String[] args)
	{
		AuctionTest at = new AuctionTest();
		try
		{
			at.bid("df");
		}
		catch (AuctionException ae)
		{
			// 再次捕捉到bid方法中的异常。并对该异常进行处理
			System.err.println(ae.getMessage());
		}
	}
}

 AuctionException.java

public class AuctionException extends Exception
{
	// 无参数的构造器
	public AuctionException(){}       //①
	// 带一个字符串参数的构造器
	public AuctionException(String msg)    //②
	{
		super(msg);
	}
}

 
2 运行结果

java.lang.NumberFormatException: For input string: "df"
 at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
 at java.lang.Double.parseDouble(Double.java:510)
 at AuctionTest.bid(AuctionTest.java:16)
 at AuctionTest.main(AuctionTest.java:39)
竞拍价必须是数值,不能包含其他字符!
3 结果说明
        上面程序bid对应catch块捕获到异常后,系统打印了该异常的跟踪栈信息,接着抛出一个AuctionException异常,通知该方法调用者再次处理AuctionException异常。所有程序中的main方法,也就是bid方法调用者再次捕获AuctionException异常并将该异常详细描述信息输出到标准错误输出。

0
0
分享到:
评论

相关推荐

    Java的throw和return

    在Java编程语言中,`throw`和`return`是两个非常重要的关键字,它们分别用于处理异常和返回方法的结果。本文将详细介绍这两个关键字的用法、特点以及它们与`finally`块之间的关系。 #### throw关键字 `throw`...

    java throw抛出异常实例二

    总的来说,`throw`关键字是Java异常处理机制的重要组成部分,它使得我们可以优雅地处理程序中的错误和异常情况,确保程序的健壮性和稳定性。通过对`ThrowException_02.java`的深入分析,我们可以更好地理解`throw`的...

    Java中throws和throw的区别讲解.docx

    ### Java中throws与throw的区别详解 #### 一、概述 在Java编程语言中,异常处理是一种重要的机制,...正确地使用`throw`和`throws`不仅可以帮助我们更好地管理程序中的错误情况,还能提高程序的可读性和可维护性。

    java try…catch捕获异常的实例

    `try-catch`块是Java异常处理的核心部分,它允许程序员在代码可能出现问题的地方进行异常捕获和处理,避免程序因未预期的错误而崩溃。下面我们将详细讨论`try-catch`捕获异常的实例。 首先,`try`块是包含可能抛出...

    Java异常处理的四大金刚:try、catch、finally和throw的深度解析

    在Java中,`try`、`catch`、`finally`和`throw`这四个关键字构成了异常处理的核心。 #### `try`关键字 `try`关键字用于标记一段可能抛出异常的代码块。这部分代码被称为`try`块,它包含了可能会引发异常的操作。...

    throws与throw的区别

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

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

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

    Java编程中使用throw关键字抛出异常的用法简介

    然后,可以在代码中使用`throw new MyException("错误信息")`来抛出自定义异常。 ### 异常链 Java还支持异常链,即一个异常可以包含另一个异常的信息。这有助于追踪问题的根源: ```java try { // ... } catch ...

    java throw抛出异常实例一

    本实例将深入探讨如何使用`throw`来创建和处理自定义异常,以及它在实际编程中的应用。 首先,我们了解异常的基本概念。在Java中,异常是程序执行过程中遇到的不正常情况,比如除以零、文件未找到等。Java使用异常...

    java异常处理机制示例(java抛出异常、捕获、断言)

    总结来说,Java异常处理机制提供了一种结构化的方法来处理程序运行时的错误,通过try-catch-finally结构捕获和处理异常,同时,利用断言进行内部逻辑验证,以及日志记录来跟踪程序行为。这样的机制增强了代码的健壮...

    JAVA 7新特性1

    在 Java 7 之前的版本中,需要使用多个 catch 块来捕获不同的异常,每个 catch 块中都需要重复编写相同的代码。例如: ``` catch (IOException ex) { logger.error(ex); throw new MyException(ex.getMessage()); ...

    Try…Catch使用小结

    // 逻辑错误,不抛异常,直接设置结果即可 return; } } catch (Exception ex) { // 程序错误,抛出自定义异常 throw ...正确地使用 Try…Catch 结构,结合自定义异常和资源管理策略,可以提高代码的稳定性和可维护性。

    Java 实例 - 使用 catch 处理异常源代码-详细教程.zip

    通过这个详细的教程,学习者可以期望掌握如何在实际项目中使用catch块来捕获和处理Java中的各种异常,从而编写更加健壮和稳定的代码。这个压缩包中的源代码实例将提供实践经验,帮助理解和应用这些理论知识。

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

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

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

    如果手动抛出的是编译时异常,即非运行时异常,需要在方法签名中使用throws声明,或者使用try...catch进行处理,否则编译不通过。 3. 如果手动抛出的是运行时异常,编译器不会强制要求处理,但最好还是能捕获并处理...

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

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

    如何区分JAVA中的throws和throw

    "如何区分JAVA中的throws和throw" Throws和throw是Java中两个非常重要的异常处理机制,但它们之间的区别却经常让新手感到困惑。下面,我们将详细介绍如何区分JAVA中的throws和throw。 Throws Throws是Java中的...

    重载重写、接口、抽象类、String指针和字符串拼接、异常catch、throw、throws、字符流和字节流

    ### 重载重写 1. **方法重载(Overloading)**:在同一类中,方法名相同但参数列表不同...综上所述,这些知识点涵盖了Java编程语言中的基本概念和技术,对于理解面向对象编程、异常处理、I/O操作等方面具有重要意义。

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

    Java处理异常的机制关键字throw和throws使用解析 Java处理异常的机制关键字throw和throws是Java语言中两个非常重要的机制关键字,它们都是用来处理异常的,但它们之间存在着明显的区别。下面我们将通过示例代码详细...

Global site tag (gtag.js) - Google Analytics