当前位置: 首页 > 面试题库 >

何时在Java中使用异常(示例)

伯庆
2023-03-14
问题内容

我知道这将是一种不好的做法,尽管我知道我无法解释原因。

int [] intArr = ...
...
try{
   int i = 0;
   while(true){
      System.out.println(intArr[i++]);
   }
}catch(ArrayIndexOutOfBoundsException e){}

我认为您只应该对 不应该发生的 事情使用异常。我之所以问这个问题,是因为我有时会错误地使用异常。如果您的程序运行的 是标准情况, 是否应该引发异常?


问题答案:

您是对的:例外是指 特殊 情况。使用它们来控制正常的控制流不仅会掩盖代码的意图(这足以使它失去资格),而且速度也要慢得多,因为抛出和捕获异常的代价很高。

标准习惯用法(在Java5及更高版本中)使用 foreach 循环:

for (int i : intArr) {
  System.out.println(i);
}


 类似资料:
  • 我创建了一个类,其中包含“继任者”方法(见下文)。我想在另一种方法中使用下一个条件: (基本上是一个条件,如果同一索引的继任者不返回异常,则返回true)。

  • 我正在尝试使用Java JNA包装器来实现Tesseract OCR API,但我一直得到Java.lang.UnsatisfiedLinkError异常 我从http://sourceforge.net/projects/tess4j/下载了最新版本 我确保使用了32位JVM。下面是异常跟踪。 我使用了http://tess4j.sourceforge.net/codesample.html中的

  • 我试图比较两个不同对象的名称,但是当使用方法将一个项目与null进行比较时,我一直得到异常。我尝试了很多方法,包括other.equals(哈哈)、haha.equals(其他)等等,但都失败了。

  • 问题内容: 在大多数情况下,我将使用异常来检查代码中的条件,我想知道何时才是使用断言的适当时间? 例如, 您能指出断言如何适合这里吗?我应该使用断言吗? 似乎我从未在生产代码中使用断言,而仅在单元测试中看到断言。我确实知道,在大多数情况下,我可以像上面一样使用异常来进行检查,但是我想知道“专业”地执行异常的适当方法。 问题答案: 断言应用于检查不应发生的事情,而异常应用于检查可能发生的事情。 例如

  • 虽然程序员可以用异常作为程序控制的替代方法,但异常处理应当只用于异常情况,处理程序组件中与这些异常处理没有直接关系的异常,处理函数、库、类等常用软件组件中的异常和组件本身不处理异常的情况,在大型系统中以统一方式处理异常。 编程技巧 13.3 对程序本身很容易处理的简单局部错误使用传统情误处理方法而不用异常处理。 软件工程视点 13.3 涉及库时,库函数调用者通常用特定错误处理方法处理库函数中产生的