- public class ExceptionDemo
- {
- public static double div(int a,int b)throws Exception
- {
- return a/b;
- }
- public static void main(String[]agrs)
- {
- int n=5;
- int m=2;
- try
- {
- double s=div(m,n);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- System.out.println(s);//这里也会显示s找不到符号
- }
- }
复制代码
首先我写的这段小代码,你可以直接尝试编译下,你会发现这个编译报错和你第一个代码出现的问题是类似的
都是什么符号没找到,你的代码中是out符号找不到,我的是s符号找不到
至少我们可以直接排除是因为流操作的问题导致的错误吧
我的理解吧 我们是在try中定义了一个变量(你的是out,我的是s),假如在try中的代码没有出错,没有抛出异常的话那么程序就是在try中成功的定义了一个变量(实例),因此在后面我们就可以使用这个变量
假如不知道因为什么原因,try中的代码块出错了,抛出了异常,是不是可以理解为这个引用或变量没用成功的被创建,既然没有成功创建,你怎么能使用一个没有被声明的变量了,所以提示找不到符号,你的第二个代码中,你的out已经被先声明了并初始化为null,然后你在try中假如出现异常,造成的结果是out没有被成功赋值,但他在开头已经被声明了,所以可以使用 书上不是说变量得先声明后使用
我说的比较废话 不够简短 但我觉得你能理解!! |