A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© muma 中级黑马   /  2014-4-4 08:59  /  1543 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 梦里花-静 于 2014-4-6 16:02 编辑

JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try 块中可以抛出异常吗?

4 个回复

倒序浏览
异常关键字的很简单,我其实了解一下具体实现原理就好多了。
Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java 中,每个异常都是一个对象,它是Throwable 类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java 的异常处理是通过5 个关键词来实现的:try、catch、throw、throws 和finally。一般情况下是用try 来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理;try 用来指定一块预防所有“异常”的程序;catch 子句紧跟在try 块后面,用来指定你想要捕捉的“异常”的类型;throw 语句用来明确地抛出一个“异常”;throws 用来标明一个成员函数可能抛出的各种“异常”;Finally 为确保一段代码不管发生什么“异常”都被执行一段代码;可以在一个成员函数调用的外面写一个try 语句,在这个成员函数内部写另一个try 语句保护其他代码。每当遇到一个try 语句,“异常”的框架就放到堆栈上面,直到所有的try 语句都完成。如果下一级的try 语句没有对某种“异常”进行处理,堆栈就会展开,直到遇到有处理这种“异常”的try 语句

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
  public Test() throws RepletException {
    try {
      System.out.println("Test this Project!")
    }
    catch (Exception e) {
      throw new Exception(e.toString());
    }
  }

throws是用来声明一个方法可能抛出的所有异常信息
throw则是指抛出的一个具体的异常类型。try
{
//执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容
}
catch
{
//除非try里面执搜索行代码发生了异常,否则这里的代码不会执行
}
finally
{
//不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
}

如果没有写catch,try的也常会向上抛出,或者运行异常,结束运行

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
JAVA对异常的处理是:
将异常情况抽离出来封装成一个Throwable类。当程序运行到有问题的地方时,通过对象调用Throwable及其子类方法进行异常处理。
throws:抛出异常。通常用于在方法上声明异常,它抛出的是异常类,可以抛出多个;
throw:抛出异常。用于在方法内抛出异常,抛出的是异常对象;
try:封装容易产生异常的代码,遇到问题则抛出异常;
catch:捕获throws/throw抛出的异常,在方法体中处理异常;
finally:不管是否捕捉到异常,程序都要执行的代码块;
在try中也可以抛出自定义的异常;

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
其实也不难理解,在Java程序设计中,采用try……catch……finally语句结构和主动抛出异常语句throw等方法来实现。通过try……catch……finally语句可以捕获一个或多个异常,其基本格式是:
    try{
        语句体
    }catch(异常错误类型变量名){
        语句体
    }finally{
        语句体
    }
    上面语句中的异常对象是在Java运行时由系统抛出的。还可以使用throw语句明确抛出一个异常,其基本格式是:
throw异常对象
对异常进行处理时,将引起异常的语句添加到最近的try语句中,由catch进行识别和处理。如果异常发生时能确保有一段代码被执行,则应该使用finally子句。
throws子句声明可能会出现的异常。如果一个方法可能会出现异常,但是没有能力来处理这种异常,可以在方法的生命处用throws子句来声明抛出异常。
而throw语句用于抛出异常。throw语句用于抛出的对象必须是java.lang.Throwable类或其子类的实例。
如果不明白java.lang.Throwable,请查看一下api
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马