为什么不调试为什么异常处理

时间:2015-09-30 14:56:24

标签: java exception-handling

我们在try和catch中指定了异常。如果我们知道要生成什么异常,为什么要进行异常处理而不是只调试那部分代码?

4 个答案:

答案 0 :(得分:1)

根据Oracle definition of Exception

  

例外是在执行程序期间发生的事件,会破坏正常的指令流

<强>结论:
如果你放置一个try {} catch块,你知道它总是会抛出异常,你的代码就错了。

例如,此代码编译?是的,但是错了

String s = "throwMe!";
try {
    int number = Integer.parseInt(s);
} catch (NumberFormatException) {
}

正确例外使用

System.out.println("Enter a number");
String s = Scanner.....     // user enters something
try {
     int number = Integer.parseInt(s);
} catch (NumberFormatException) {
     // TELL USER THERE IS A PROBLEM
}
// TELL USER IS A GENIUS

这将有2个执行流程,正确的一个(用户是天才),但是当用户输入一个中断流量(Integer.parseInt(s);)的值时,抛出异常......

答案 1 :(得分:0)

不,例外是指我们无法预见的运行时条件

例如,由于用户输入了错误的数据,会发生被零除错误。

所以你抓住了try-catch

try {

}
catch(ArithmeticException){
}

答案 2 :(得分:0)

您不必进行异常处理或调试,您可以同时执行这两项操作,并且良好的异常处理可帮助您稍后调试代码。

如果没有别的catch块应该打印堆栈跟踪,它会为您提供有关代码出错的信息,并且比静默失败然后手动调试整个代码以进行搜索要好得多对于这个问题。

还有many other advantages使用异常进行错误处理。

答案 3 :(得分:0)

Try / catch块是您无法预见的错误。像空指针和除以0错误之类的东西不需要尝试捕获块。这些东西通常是程序员的错误,应该由程序员调试。但是像IOException或SQLException这样的东西,你正在与其他可能失败的系统接口或者给程序员无法控制的无效输入,那些东西需要一个try / catch块。