日期:2014-05-20  浏览次数:20734 次

Java 抛出异常的问题
代码如下:

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…帮助查找编译异常的原因。这样有什么负作用么?

------解决方案--------------------
你devide()抛出了异常main方法没处理,肯定编译不过。

一般来说没啥副作用,就是开销有点大。不放循环等一些执行率很大的程序里面影响不大
------解决方案--------------------
人家书里说的是“编译错误”
你这个代码压根就不能编译成功,何谈运行呢。

问题一: 请问编译结果应该是? 

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