由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Java的例外处理问题什么情况下不用写throws
相关主题
Exception 问题求助真是痛恨喜欢 throw 的猪
大家对 exception 都是怎么处理的?C++ Q15: throw
一道编程题 - throw Exceptions大家对checked exception怎么看
ExceptionTwo questions about handling exceptions in C++
C++的exception大家常用吗?A try-catch problem in C++
c++:exception 一问c++ exception 一问
try catch questionc++ exception
C++ try {} catch(...){} 能扑捉一切异常吗?请教:函数后面的 throw() 有意义么?
相关话题的讨论汇总
话题: myerror话题: catch话题: throws话题: exception话题: 里面
进入Programming版参与讨论
1 (共1页)
b***i
发帖数: 3043
1
还是那个项目,现在我看里面的结构,有一个函数
play(...){
try {
... call(); //这是定义在一个抽象类的函数,众多子类实现该定义

} catch(MyError my){
...
}
}
然后,在某些子类的call里面,我没有看到throws声明。
我把自己定义的一个call里面加入了Thread.sleep,目的就是如果interrupt了,就把线
程退出。发现eclipse说需要throws InterruptedException, 或者要自己catch。那么
为什么在众多的子类的call函数里面,MyError没有catch,也没有throws声明,只需要
在最外围的play那里catch?
我按照eclipse的提示,一步一步增加throws,结果已经增加了十几个了,不敢继续改
,因为改太多了。为什么原来的MyError不用这么做呢?我是不是需要被
InterruptedException截获,然后放在MyError里面,在play里面一起处理?我这样处
理,线程如果被中断,是可以退出的。我的目的就是如果我中断一个线程,就在play那
里处理InterrupteException
另外一个方案是,在我那个自己定义的call里面改变一个ThreadLocal的变量,然后在
play里面查询。play里面是循环处理,所以如果处理完一件事情,可以查询这个变量。
缺点是会增加开销
w**z
发帖数: 8232
2
看看Java runtime exception.

【在 b***i 的大作中提到】
: 还是那个项目,现在我看里面的结构,有一个函数
: play(...){
: try {
: ... call(); //这是定义在一个抽象类的函数,众多子类实现该定义
:
: } catch(MyError my){
: ...
: }
: }
: 然后,在某些子类的call里面,我没有看到throws声明。

j******l
发帖数: 10445
3
不清楚就和tech lead咨询。每个公司每个项目技术方面的要求不一样。
in general, 如果是需要user知道出错了,就包装成user friendly exception
message往外扔,如果不需要用户知道,那就catch and continue 或者 catch and
stop.
参考existing code in your application.
b***s
发帖数: 117
4
有可能catch之后,throw的不是原来的那个exception了
而是一个打包的runtime exception,就不用catch了
比如是这样:
class MyException extends RuntimeException {...}
try{
...
} catch (InterruptedException ie) {
...
throw new MyException(message); //unchecked exception
}

【在 b***i 的大作中提到】
: 还是那个项目,现在我看里面的结构,有一个函数
: play(...){
: try {
: ... call(); //这是定义在一个抽象类的函数,众多子类实现该定义
:
: } catch(MyError my){
: ...
: }
: }
: 然后,在某些子类的call里面,我没有看到throws声明。

b***i
发帖数: 3043
5
好像是checked exception和unchecked的区别。
网上有人问,这个InterruptedException为啥要check。那我就截获然后throw MyError
,里面增加一个boolean表示是线程中断就行了。

【在 w**z 的大作中提到】
: 看看Java runtime exception.
b***s
发帖数: 117
6
RuntimeException以下的,都是unchecked的

MyError

【在 b***i 的大作中提到】
: 好像是checked exception和unchecked的区别。
: 网上有人问,这个InterruptedException为啥要check。那我就截获然后throw MyError
: ,里面增加一个boolean表示是线程中断就行了。

m*********a
发帖数: 3299
7
估计MyError 是run time exception.是unchecked.
你过你添加的call中加了interrupted exception,可以re-throw
youcall()
{
try{}
catch (InterruptedExcetpion e){
MyError myerror = new MyError();
myerror.setSource(e);
throw myerror;
}
}

}

【在 b***i 的大作中提到】
: 还是那个项目,现在我看里面的结构,有一个函数
: play(...){
: try {
: ... call(); //这是定义在一个抽象类的函数,众多子类实现该定义
:
: } catch(MyError my){
: ...
: }
: }
: 然后,在某些子类的call里面,我没有看到throws声明。

F****n
发帖数: 3271
8
Error和RuntimeException不用catch
1 (共1页)
进入Programming版参与讨论
相关主题
请教:函数后面的 throw() 有意义么?C++的exception大家常用吗?
关于 exception 的一个问题c++:exception 一问
C++ 用户定义exception的标准用法是什么?try catch question
C++ Q17: throw 2C++ try {} catch(...){} 能扑捉一切异常吗?
Exception 问题求助真是痛恨喜欢 throw 的猪
大家对 exception 都是怎么处理的?C++ Q15: throw
一道编程题 - throw Exceptions大家对checked exception怎么看
ExceptionTwo questions about handling exceptions in C++
相关话题的讨论汇总
话题: myerror话题: catch话题: throws话题: exception话题: 里面