`
vvnet
  • 浏览: 116468 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

java异常处理之throw, throws,try和catch

    博客分类:
  • JAVA
阅读更多

java异常处理之throw, throws,try和catch 

    程序运行过程中可能会出现异常情况,比如被0除、对负数计算平方根等,还有可能会出现致命的错误,比如内存不足,磁盘损坏无法读取文件等,对于异常和错误情况的处理,统称为异常处理。
    Java异常处理主要通过5个关键字控制:try、catch、throw、throws和finally。try的意思是试试它所包含的代码段中是否会发生异常;而catch当有异常时抓住它,并进行相应的处理,使程序不受异常的影响而继续执行下去;throw是在程序中明确引发异常;throws的作用是如果一个方法可以引发异常,而它本身并不对该异常处理,那么它必须将这个异常抛给调用它的方法;finally是无论发不发生异常都要被执行的代码
    
    关键字:throw,throws,try和catch的用法如下:
        1、throws出现在方法的声明中,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型
        2、throw出现在方法体中,用于抛出异常。当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw。
        3、try出现在方法体中,它自身是一个代码块,表示尝试执行代码块的语句。如果在执行过程中有某条语句抛出异常,那么代码块后面的语句将不被执行。
        4、catch出现在try代码块的后面,自身也是一个代码块,用于捕获异常try代码块中可能抛出的异常。catch关键字后面紧接着它能捕获的异常类型,所有异常类型的子类异常也能被捕获。
        
    演示实例

    package book.exception;
/**
 * 抛出异常和声明异常
 * 
@author joe
 *
 
*/


public class ThrowAndThrows {
    
/**
     * 计算一个数字的平方根
     * 
@param nStr    以字符串的形式提供数字
     * 
@return    返回平方根
     * 
@throws Exception    当用户输入的字符串为空,
     * 或者字符串无法转换成数字,或者转换成的数字小于0,都会抛出异常
     
*/

    
public static double sqrt(String nStr) throws Exception {
        
if (nStr == null{
            
//用trow关键字抛出异常,当异常被抛出时,程序会跳出该方法
            throw new Exception("输入的字符不能为空!");
        }

        
double n = 0;
        
try {
            n 
= Double.parseDouble(nStr);
        }
 catch(NumberFormatException e) {
            
//将parseDouble方法可能抛出的异常NumberFormatException捕获,
            
//然后将捕获的异常重新封装并输出
            throw new Exception("输入的字符串必须能够转化成数字!", e);
        }

        
if (n < 0 ){
            
throw new Exception("输入的字符串转化成的数字必须大于0!");
        }

        
return Math.sqrt(n);
    }

    
    
public static void main(String[] args) throws Exception {
        
try{
            ThrowAndThrows.sqrt(
"-124.56");
        }
 catch(Exception e) {
            
//将sqrt方法声明的可能抛出的Exception异常捕获
            
//打印捕获的异常的堆栈信息,从堆栈信息中可以发现异常发生的位置和原因
            System.out.println("Got a Exception:" + e.getMessage());
            e.printStackTrace();
            
throw e;    //不做进一步处理,将异常向外抛出
        }

        
        
//将sqrt声明了可能会抛出的异常向外抛出,必须在方法声明中使用throws
        ThrowAndThrows.sqrt("-124.56");
    }


}

程序输出结果:

Got a Exception:输入的字符串转化成的数字必须大于0!
java.lang.Exception: 输入的字符串转化成的数字必须大于0!
    at book.exception.ThrowAndThrows.sqrt(ThrowAndThrows.java:
30)
    at book.exception.ThrowAndThrows.main(ThrowAndThrows.java:
37)
Exception in thread 
"main" java.lang.Exception: 输入的字符串转化成的数字必须大于0!
    at book.exception.ThrowAndThrows.sqrt(ThrowAndThrows.java:
30)
    at book.exception.ThrowAndThrows.main(ThrowAndThrows.java:
37)

源码分析:
    在main方法里,由于sqrt方法的声明中有throws关键字,所以,在调用该方法时,必须对throws后面声明的异常进行处置,处置的方法有两种:
    (1)main方法处理该异常,使用try.....catch语句,将可能会出现的异常的代码放在try块内,将处理异常的代码放在catch块内,并指明catch能够捕获的异常的类型,当异常被捕获时,执行catch块内的语句。
    (2)main方法不处理该异常,将异常向外层程序抛出。在方法声明中使用throws关键字抛出异常,方法体中不需要使用try...catch语句。
    
    异常类Exception的getMessage方法用来获取一场的描述信息,printStackTrace方法用来打印异常的堆栈信息,通过堆栈信息能够查明异常发生的原因和位置,在调试的时候常用。

分享到:
评论

相关推荐

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

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

    java try…catch捕获异常的实例

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

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

    ### Java异常处理的四大金刚:try、catch、finally和throw的深度解析 #### Java异常处理概述 异常处理机制是程序设计中的一个重要组成部分,它能够帮助程序员有效地管理程序运行过程中可能出现的各种错误情况。...

    375.373.JAVA基础教程_异常处理-处理异常:try-catch方式(375).rar

    在这个“375.373.JAVA基础教程_异常处理-处理异常:try-catch方式(375)”的教程中,我们将深入探讨Java中的异常处理机制,特别是如何通过try-catch语句块来处理异常。 异常在Java中是一种对象,它是类`Exception`或...

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

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

    使用try-catch-finally处理异常

    总的来说,正确地使用`try-catch-finally`可以帮助我们编写出更加健壮的代码,能够优雅地处理异常,保持程序的稳定运行,并提供有价值的错误反馈,从而提高用户体验。理解并熟练掌握异常处理是每个IT专业人士必备的...

    JAVA异常处理机制之throws/throw使用情况的区别

    JAVA异常处理机制之throws/throw使用情况的区别 在 Java 中,throws 和 throw 是两个常用的...我们可以根据实际情况选择使用 throws 或者 throw 来声明和抛出异常,并使用 try...catch structures 来捕获和处理异常。

    Java异常处理体系

    Java异常处理的核心在于五个关键字:try、catch、finally、throw和throws。这些关键字帮助程序员构建了一个框架,当程序遇到预期或未预期的问题时,能够妥善地响应。 1. **try**:try块是异常处理的起点,它包含...

    JAVA中异常处理的WORD文档

    总之,Java的异常处理机制是通过`try`, `catch`, `finally`, `throw`, 和 `throws`关键字实现的,它提供了对程序运行时错误的有效管理,增强了程序的健壮性。理解并熟练运用这些概念对于编写高质量的Java代码至关...

    java异常处理.ppt

    理解异常的概念,运用 try 块、catch 块和 finally 块处理异常,运用多重 catch 块处理异常,运用嵌套 try/catch 块处理异常,运用关键字 throw 和 throws 处理异常。 3. 程序中的异常 在 Java 中,异常可以是编译...

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

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

    Java常见工具类及异常处理

    try 块用于包含可能会引发异常的代码块,catch 块用于捕获和处理异常,finally 块用于释放资源。throws、throw 关键字用于声明方法可能会抛出的异常和手动抛出异常。 Java 异常类的层次结构是一个树形结构,其中 ...

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

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

    java异常处理例题代码文.pdf

    java异常处理机制包括try、catch、finally三部分,try块用于执行可能出现异常的代码,catch块用于捕获和处理异常,finally块用于执行finally语句,无论是否出现异常都会执行。 App9_1.java:捕获数组下标越界异常和...

    java 异常处理 代码实例

    Java异常处理的核心在于五个关键字:try、catch、finally、throw和throws。这些关键字共同构成了Java的异常处理框架,帮助我们捕获、处理和记录程序运行过程中的异常情况。 1. **try块**:在可能出现异常的代码段前...

    Java异常处理之try...catch...finally详解

    Java异常处理机制及实现方法主要依赖于try、catch、finally、throw和throws这五个关键字。Try关键字后跟一个花括号栝起的代码块(即使该代码块只有一行也不能省略花括号),简称try块。Catch对应异常类型和代码块,...

    java 异常处理练习

    1. **try-catch-finally**:这是Java异常处理的核心构造,用于捕获并处理异常。`try`块包含可能会抛出异常的代码,如果在`try`块中出现异常,程序会立即跳转到相应的`catch`块。`catch`块定义了如何处理特定类型的...

    浅析JAVA异常处理机制.pdf

    - **catch块**:紧跟在`try`块后面,用来捕获并处理异常。 - **finally块**:包含清除程序未释放的资源等操作,无论`try`块中的代码如何退出,都会执行`finally`块。 #### 五、创建与抛出异常 当遇到无法处理的...

    Java异常处理,非常适合Java爱好者

    Java异常处理有五个关键字:`try`, `catch`, `finally`, `throw`, 和 `throws`。下面逐一解释它们的作用: 1. **try**:try块用于包含可能会抛出异常的代码。如果try块中的代码抛出一个异常,控制流会立即跳到与之...

Global site tag (gtag.js) - Google Analytics