代码如下:package test;
public class TestException
{
public static void main(String [] args)
{
int result = new Test().devide(3, 1);
System.out.println("the result is" + result );
}
}
class Test
{
public int devide(int x, int y) throws Exception
{
int result = x/y;
return x/y;
}
}
书中解答说将出现如下的编译错误:
TestException.java:5: unreported exception java.lang.Exception; must be caught or declared to be thrown
int result = new Test().devide( 3, 1 );
但是我的运行结果是:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type Exception问题一: 请问编译结果应该是?
问题二: 是否在真实的程序编写中,都加上try…catch…帮助查找编译异常的原因。这样有什么负作用么?
public class TestException
{
public static void main(String [] args)
{
int result = new Test().devide(3, 1);
System.out.println("the result is" + result );
}
}
class Test
{
public int devide(int x, int y) throws Exception
{
int result = x/y;
return x/y;
}
}
书中解答说将出现如下的编译错误:
TestException.java:5: unreported exception java.lang.Exception; must be caught or declared to be thrown
int result = new Test().devide( 3, 1 );
但是我的运行结果是:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type Exception问题一: 请问编译结果应该是?
问题二: 是否在真实的程序编写中,都加上try…catch…帮助查找编译异常的原因。这样有什么负作用么?
你这个代码压根就不能编译成功,何谈运行呢。问题一: 请问编译结果应该是? c:\jdk\bin>javac -g TestException.java
TestException.java:7: 错误: 未报告的异常错误Exception; 必须对其进行捕获或声明以便抛出
int result = new Test().devide(3, 1);
^
1 个错误
问题二: 是否在真实的程序编写中,都加上try…catch…帮助查找编译异常的原因。这样有什么负作用么?真正写java程序都是在eclipse或者其他ide环境中写代码,这种编译错误在写的时候就能提示给你。一般来说自己处理不了的错误就抛出去,让上层逻辑去处理。不要try catch。除非你明确知道这里有什么错误,并需要记录日志或处理异常导致的一系列问题才去try catch
所以你调用的时候就try catch 下就ok
2.一般在开发都会自己try catch 方便找问题,写工具就会 throws出去因为用的人不是自己,一句话谁用谁 try catch
你这行代码有误!你要new这个实例的话说明你前面的应该不是静态方法,所以你前面应该创建这个方法的对象来接收,而不是直接接收。
至于什么时候使用try catch,
因为trycatch 的开销比较大,效率低,一般不要把已知的可能产生的错误去使用异常机制去处理,不要刻意的用异常机制去代替正常的程序流程,
还有不要使用过大的try catch块等等。。