java throw error
异常
异常存在的目的
看一下C语言的出错处理方式
int f() {
f1();
f2():
f3();
}//如果在每个函数后都增加出错的判断(如果是正常逻辑可以走不同的分支)并释放资源,那这个函数内会有太多与主干无关影响清晰阅读的代码存在,而且过多return有时会使得资源的忘记释放,
C语言常见的做法是使用goto
int f() {
if (f1() < 0 ) goto end;
f2():
f3();
end:
...
}但如果函数f1和f2,f3需要不同的错误处理,那恐怕要增加多个标签,或者在if后边增加变量并在end后通过变量来判断,不过有if存在这样还是影响清晰
另一种做法是使用包裹宏或者包裹函数
int f() {
if_false_return (f1() , -1);//包裹宏,执行出错返回给定值,不过在C语言内这似乎是一个比较理想的做法
if_null_break(f2()):
f3();//包裹函数,不过只能提供退出程序的操作,很多时候我们需要的是return操作
end:
...
}//似乎阅读起来也并不舒服,
最理想的方式是在函数主干逻辑外捕捉出错的问题,在Java中使用了抛出异常的方式,
try {
//主干逻辑
}
catch() {
//错误处理
}//还有没有一种更理想的方式,连try都不用(这个try{}看起来有点怪),譬如函数式不会出错那样,可譬如打开文件总是会出错的。
有时候我并不想函数的返回值异常时立即不执行下边的语句并跳入catch,而是想根据异常值进行调整呢?那使用异常就不好用了,还是要根据返回值判断。
譬如使用这种语法方式
f() {
f1();
f2();
...;
}
f_e() {
...;//完全在另一个函数内进行异常的捕捉呢
}
或者
f() {
f1();
f2();
...;
catch:
switch class_e {
case e1:
...
}
}//RUBY中是如何实现的呢,LUA中呢?
C
f() {
if (open_file1_error)
}
相关文档:
1、
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garba ......
\n 换行(\u000a)
\t 水平制表符(\u0009)
\b 空格(\u0008)
\r 回车(\u000d)
\f 换页(\u000c)
\' 单引号(\u0027)
\" 双引号(\u0022)
\\ 反斜杠(\u005c)
\ddd 三位八 ......
有些人写了一阵子 Java,可是对于 Java 的 package 跟 import 还是不太了解。很多人以为原始码 .java 文件中的 import 会让编译器把所 import 的程序通通写到编译好的 .class 档案中,或是认为 import 跟 C/C++ 的 #include 相似,实际上,这是错误的观念。
让我们先了解一下,Java 的 package ......
这是一个Java版的世界时钟示例,移植自Gerrit创建的同名Swing应用(http://www.jug-muenster.de/swing-worldclock-427
),需要运行在JRE1.5或以上环境当中。
移植此示例主要是因为前一阵移植过Gerrit的swing原子钟示例,所谓好事成双,这个世界时钟的示例自然不能放过(话说Gerrit为什么那么喜欢做时钟?…&hellip ......