例如:
class a{
static int v=f();
static int f() throws IOException{
//...
}
}
这里假设f()中会涉及到文件操作,所以会抛出IOException,上面的代码没法编译通过,提示错误在static int v=f()一行:Unhandled exception...
我当然不希望在f()方法中catch异常,因为有了异常,就应该抛出来,让使用者处理,而不应该“隐瞒”。
class a{
static int v=f();
static int f() throws IOException{
//...
}
}
这里假设f()中会涉及到文件操作,所以会抛出IOException,上面的代码没法编译通过,提示错误在static int v=f()一行:Unhandled exception...
我当然不希望在f()方法中catch异常,因为有了异常,就应该抛出来,让使用者处理,而不应该“隐瞒”。
解决方案 »
- serial中的getInputString与getOutputString的具体用法。
- 程序调试问题Exception in thread "main" java.util.NoSuchElementException
- 这段程序的运行结果为什么是这样??
- Java中void方法的异常处理
- javax.crypto包在哪里
- 大家帮我看看这个class
- 在Xml中“href”是什么意思啊!
- 求高手细心 解释 9行代码~~~1234随即不重复排列
- 请进
- 求救!!
- 一个目录树的父子节点有4千多或更多,现在用以前的XTREE代码出现了读取树结构读取不出的错误.请问用什么比较好,对于数据量较大的数据量的
- 多线程一小问题,大家帮帮忙!
throw new IOException();
一定要接收写个TRY语句解决
try {
static int v=f();
}
catch(IOException e){}就行了
static int v;
static {
try {
v=f();
} catch (IOException e) {
e.printStackTrace();
}
}
采用单例模式,将静态实例变量改为实例变量,你就可以在构造实例的时候捕获异常。
static int v=f();
static int f() throws IOException{
//...
}
}
这个是有问题的,你在f()方法中抛出了IOException异常,但是你赋值给v时并没有处理IOException所以编译就通不过,你可以将初始化工作交给另一个Static方法去初始化
import java.io.IOException;
public class a {
static int v;
static void Begin() throws Exception{
v=f();
}
static int f() throws IOException{
return 0;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
当中如果出现异常它将一级一级向上抛,直到java虚拟机.
class a{
static int v=f();
static int f() throws IOException{
//...
}
}
这里假设f()中会涉及到文件操作,所以会抛出IOException,上面的代码没法编译通过,提示错误在static int v=f()一行:Unhandled exception...
我当然不希望在f()方法中catch异常,因为有了异常,就应该抛出来,让使用者处理,而不应该“隐瞒”。同理,我也不希望在给v赋值时catch异常。所以:
liujun999999(神仙、妖怪、谢谢)
f()里当然有抛出IO异常的代码。sheep219(sheep219)
呵呵,多谢,希望我这次说得清初一些了。qq14923349(剑神)
你说的检查性异常是什么?有什么特别指出吗?
我不希望写个try,然后把异常catch而欺骗调用者说一切正常。yingge(盼胖)
这虽然编译可能通过,但我不想“隐瞒”异常lxwin01(阿幸)
这样使用者在使用这个类(的静态变量v)以前,就必须先调用Begin(),这个不必要的限制会个使用者带来很大的麻烦。RainRainbow()
呵呵,这样写编译能通过,但我不想“隐瞒”异常jshi123()
这是我最不希望的答案,但也许是正确的答案了。
单例模式确实是好的解决方案,但还是有细微的性能损失的。何况,作为严谨的语法,应该有办法来处理这种问题吧。
方法1,同意RainRainbow()的做法
方法2,把IOException强行转化成RuntimeException
没有上了啊,在静态变量初始化时,不让抛异常。
要能支持这种语法(允许static{}像一个函数一样定义)才行:
class a{
static int v;
static throws IOException{
v=f();
}
static int f() throws IOException{
//...
}
}crazycy(崔毅)
嗯,我现在用的就是方法2,只不过觉得比较晕。
另外,jshi123()说的单例模式也算一个解决办法。