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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

学到异常的时候,觉得这块东西比较乱。try catch和throws是平行关系吗?是不是要么try catch要么throws呢?还有throw的出现是为了解决自定义异常时虚拟机不认识的情况吗?这三个东西在使用时到底怎么考虑呢?

6 个回复

倒序浏览
首先,throws和throw不一样,throw 是语句抛出一个异常;throws 是方法抛出一个异常;try catch是捕获异常并处理,throws是将异常抛给调用该方法的方法,所以不能算是平行的,二者是有区别的。try .... catch 就是用catch 捕获 try 中的异常,并处理;catch是捕获异常。也就是说某一个操作有可能会抛出什么异常。throws 就是不处理异常,直接抛出异常。但是二者也有联系,如果一个方法中用了throws,那么这个方法会向上抛出一个异常,那么在调用这个方法的时候必须把这个调用放在try...catch块里处理这个异常。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
还有throw的出现是并不是为了解决自定义异常时虚拟机不认识的情况,主要让调用该方法的方法去处理这个异常。
回复 使用道具 举报
乱乱的!没看懂!
回复 使用道具 举报
  异常:就是不正常。程序在运行时出现的不正常情况。其实就是程序中出现的问题。这个问题按照面向对象思想进行描述,并封装成了对象。因为问题的产生有产生的原因、有问题的名称、有问题的描述等多个属性信息存在。当出现多属性信息最方便的方式就是将这些信息进行封装。异常就是java按照面向对象的思想将问题进行对象封装。这样就方便于操作问题以及处理问题。

出现的问题有很多种,比如角标越界,空指针等都是。就对这些问题进行分类。而且这些问题都有共性内容比如:每一个问题都有名称,同时还有问题描述的信息,问题出现的位置,所以可以不断的向上抽取。形成了异常体系。

异常的处理方式俩种:

1、捕捉;2、抛出。

对于捕捉:java有针对性的语句块进行处理。
try {
        需要被检测的代码;
}
catch(异常类 变量名){
        异常处理代码;
}
fianlly{
        一定会执行的代码;
}

抛出的处理方法有俩种形式就是throw和throws二者是有区别的,请看下面的说明:

throw 和throws关键字的区别:
throw用于抛出异常对象,后面跟的是异常对象;throw用在函数内。
throws用于抛出异常类,后面跟的异常类名,可以跟多个,用逗号隔开。throws用在函数上。

通常情况:函数内容如果有throw,抛出异常对象,并没有进行处理,那么函数上一定要声明,否则编译失败。但是也有特殊情况。

点评

好细致  发表于 2014-5-17 12:10

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1. 不是平行关系,发现异常代码块,要么try catch ,要么抛出throws 抛出异常
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马