在try块中初始化一个变量,一个变通方法?

时间:2013-07-01 07:51:15

标签: java initialization try-catch

我有一个try-catch块;在try内,我从控制台读取变量N并初始化Array[N]。我需要稍后使用Array。如果我在try块之外使用它,我会收到错误

java variable may not have been initialized

我明白了,但是我应该怎么做,把整个程序写在try块里面,真的吗?此类程序的可读性更差,我在代码上使用try,其中exceptions是可能的。有解决方法吗?我尝试了一个boolean变量来检查是否存在异常,稍后在if语句中使用它 - 没有结果。

5 个答案:

答案 0 :(得分:8)

Object[] yourArray = null;
try {
  ...
}

答案 1 :(得分:2)

即使在不调用任何方法的行上,也可能无处不在。

你的问题是另一个失败的例子,即Java的检查了异常,特别是初学者:他们似乎强迫你编写try-catch,并且甚至误导你认为这些是可能出现的唯一例外。

try-catch块必须覆盖精确的代码区域,该区域必须以正常完成的每条线路上的所有内容为条件执行,并且它们具有相同的错误处理模式。这与检查/未检查的异常完全无关。

因此,如果不确切地知道您的要求是什么,就不能给出关于将尝试和捕获放在何处的具体建议。

答案 2 :(得分:0)

您基本上有两个选择:

  1. 按照建议
  2. try catch块内编写代码
  3. 将您的数组初始化到null块之外的try catch,稍后检查您的数组是否为null并且已初始化

答案 3 :(得分:0)

块中声明的变量只能在该块中访问。 您可以在try块外定义数组,然后在try块中使用

String [] arr = null;
try{
  // assign value here
 }catch(Exception e){
}

答案 4 :(得分:0)

如果try ... catch ...子句

,你应该在变量外声明
int n = null;
try{
    some code goes here
    .
    .
    .
catch(Exception e){
}

记得考虑变量范围。 在try语句中声明的变量或对象,或者在{}内部的任何其他方法中声明的变量或对象对于类的其他部分是不可见的

希望这很有帮助

相关问题