try catch 里的变量和外面的有什么区别?

public class ArgsTest {
public static void main (String [] args) {
if (args.length<3){
System.out.println("Usage\"a\"op\"b\"");
System.exit(-1);
}
try{
double a = Double.parseDouble(args[0]);
double b = Double.parseDouble(args[2]);
double c = 0;
if (args[1].equals("x")) c=a*b;
else if (args[1].equals("/")) c=a/b;
else if (args[1].equals("+")) c=a+b;
else if (args[1].equals("-")) c=a-b;
} catch (Exception e) {
e.printStackTrace();
}
System.out.print(c);
}
}
上面这个编译错误,找不到变量c,而下面的程序把输出放到try中又是正确的,请问为什么会这样呢?
public class ArgsTest {
public static void main (String [] args) {
if (args.length<3){
System.out.println("Usage\"a\"op\"b\"");
System.exit(-1);
}
try{
double a = Double.parseDouble(args[0]);
double b = Double.parseDouble(args[2]);
double c = 0;
if (args[1].equals("x")) c=a*b;
else if (args[1].equals("/")) c=a/b;
else if (args[1].equals("+")) c=a+b;
System.out.print(c);
} catch (Exception e) {
e.printStackTrace();
}
}
}

  变量的作用域不同。变量c在try{}块中定义他的作用就只在try{}可见,将变量的声明放在try外面,才在try{}外可用。
  例如,下面这段代码会出现编译错误,找不到变量c:
  public class ArgsTest {
  public static void main (String [] args) {
  if (args.length<3){
  System.out.println("Usage\"a\"op\"b\"");
  System.exit(-1);
  }
  try{
  double a = Double.parseDouble(args[0]);
  double b = Double.parseDouble(args[2]);
  double c = 0;
  if (args[1].equals("x")) c=a*b;
  else if (args[1].equals("/")) c=a/b;
  else if (args[1].equals("+")) c=a+b;
  else if (args[1].equals("-")) c=a-b;
  } catch (Exception e) {
  e.printStackTrace();
  }
  System.out.print(c);
  }
  }
  将上面的代码改动如下,就可以了:
  public class ArgsTest {
  public static void main (String [] args) {
  if (args.length<3){
  System.out.println("Usage\"a\"op\"b\"");
  System.exit(-1);
  }
  double c = 0;
  try{
  double a = Double.parseDouble(args[0]);
  double b = Double.parseDouble(args[2]);
  if (args[1].equals("x")) c=a*b;
  else if (args[1].equals("/")) c=a/b;
  else if (args[1].equals("+")) c=a+b;
  else if (args[1].equals("-")) c=a-b;
  } catch (Exception e) {
  e.printStackTrace();
  }
  System.out.print(c);
  }
  }
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-15
变量的作用域问题。变量c在try{}块中定义他的作用就只在try{}可见,以后遇到这种情况可将变量的声明放在try外面
例如 可将上面的代码改成这样
public class ArgsTest {
public static void main (String [] args) {
if (args.length<3){
System.out.println("Usage\"a\"op\"b\"");
System.exit(-1);
}
double c = 0;
try{
double a = Double.parseDouble(args[0]);
double b = Double.parseDouble(args[2]);
if (args[1].equals("x")) c=a*b;
else if (args[1].equals("/")) c=a/b;
else if (args[1].equals("+")) c=a+b;
else if (args[1].equals("-")) c=a-b;
} catch (Exception e) {
e.printStackTrace();
}
System.out.print(c);
}
}

就可以了本回答被提问者和网友采纳

try catch 里的变量和外面的有什么区别?
变量的作用域不同。变量c在try{}块中定义他的作用就只在try{}可见,将变量的声明放在try外面,才在try{}外可用。例如,下面这段代码会出现编译错误,找不到变量c:public class ArgsTest { public static void main (String [] args) { if (args.length<3){ System.out.println("Usage\\"a\\"...

java里面为什么try-catch里的语句不能在外面调用?
try中声明的变量,只有在try里才能使用。 你可以在try之前就把变量声明出来 比如 Iphone ip2=null;try{ \/\/这里写赋值和其他的操作语句 }catch{ \/\/捕获异常 }

为什么使用Try,Catch捕获异常,程序依然Crash
1.只有在try块内部的代码所抛出的异常才会被捕获,如果是try块范围外的代码,就不会捕捉异常。2.catch需要指定异常类型。只能够捕获指定的异常类型。如果发生崩溃的异常并没有列在catch中,那么也不会捕获该异常。最终导致程序崩溃。

try catch放循环体内还是外?
外面。如果遇到异常,循环停止。如果放在循环里面,就会一直抛出异常信息,最后内存溢出。楼下说我的错误:附上代码你运行下 放在循环里面捕获:while (true){ try { throw new NullPointerException();}catch (Exception e){ e.printStackTrace();} } 程序会一直打印异常信息。放在外面捕获:try { wh...

js中,一个a函数里面有个try catch函数,try{}里面有定义了一个变量,我...
有两种办法, 一是把变量定义在函数外部,也就是外部公共变量, 它可以到处使用的;二是作为函数的值来返回; 如下:var aaa = 1; function a (){ alert(aaa); } function a(){ var aaa=1; return aaa; }; var b = a(); alert(b);

java Exception写在try catch里面,和写在method后面有什么不同?
1、异常,是提醒人(注意,不是提醒开发时的程序员,而是提醒执行时的使用者)程序处于不正常状态的,因此要告诉这个人,是哪里不正常,也就是异常的类别。你的代码里就是ClassNotFoundException,这个意思是没找到类。如果只告诉(运行时的)使用者有一个Exception,对使用者来说太不明确。此时,我们在...

JAVA中try语句中catch后的参数是什么意思?
try catch是一个组合。当我执行try里面的代码,出错以后,它会查找相应的catch catch就是逮住错误的意思。括号里面的参数,IOException 表示它是IO错误。即读写错误。当出现了错误以后,会把这个IO异常赋给e 那括号中的e就是我们的错误。然后,拿到这个错误以后,你想怎么办,那就看你程序需要了。一个...

java中 try-catch一个catch满足了.剩下的catch是否执行
发生异常的时候,java会一个个向下catch,直到有一个catch能捕获异常,再下面的catch就不执行了。但是上面catch的范围一定要比下面catch的范围少,否则下面的catch就不会捕获得到了,也编译不过。

java里的try { } catch 后面的内容应该怎么写呢?
try{ } catch (Exception e){ 这个e就是一个异常对象,表来描述程序发生的错误 } 这个就表示捕获所有异常 因为所有异常都继承了Exception

py-try catch
一、 try catch 格式:try:print('pass')except 异常类型:print('something wrong')1.先执行try和except之前的语句,如果没有异常执行完try语句就结束。2.如果在执行try语句的过程中发生了异常,try语句中剩下的部分不会再执行。会将异常的类型和except后的错误类型进行匹配,如果匹配类型匹配得上,...

相似回答