由买买提看人间百态

topics

全部话题 - 话题: myerror
(共0页)
d****n
发帖数: 1637
1
来自主题: Programming版 - go 的坑(转载)
献给gopher们,俺还没踩到,不过惊出一身冷汗。希望对其他gopher有用
http://studygolang.com/articles/5188
坑(s)
每种编程语言都有自己的专属坑(s),Go虽出身名门,但毕竟年轻,坑也不少,在error
处理这块也可以列出几个。
1、 Go FAQ:Why is my nil error value not equal to nil?
type MyError string
func (e *MyError) Error() string {
return string(*e)
}
var ErrBad = MyError("ErrBad")
func bad() bool {
return false
}
func returnsError() error {
var p *MyError = nil
if bad() {
p = &ErrBad
}
return p // Will always return a non-nil error.
}
func main() {... 阅读全帖
m*********a
发帖数: 3299
2
估计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
发帖数: 3043
3
还是那个项目,现在我看里面的结构,有一个函数
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里面一起处理?我这样处
理,线程如果被中断,是可以退出的。我的目的就是如... 阅读全帖
t****t
发帖数: 6806
4
来自主题: Programming版 - 关于STDERR定向到文件问题
oh, you don't even have to open a new handle. you probably can use
{
open (local *STDERR, "> myerror") or die;
Net::Ftp ...
}
note the parenthesis for open.
b***i
发帖数: 3043
5
好像是checked exception和unchecked的区别。
网上有人问,这个InterruptedException为啥要check。那我就截获然后throw MyError
,里面增加一个boolean表示是线程中断就行了。
b***s
发帖数: 117
6
RuntimeException以下的,都是unchecked的

MyError
(共0页)