Logo

郎哥编程

在Java中如何处理程序出现的异常

2018-04-02 869

编写Java程序经常会遇到错误。一类错误是语法错误或资源链接错误,此类错误一般在编译过程中就可以发现;另一类错误是在程序运行过程中出现的错误,该类错误被称为程序异常,由于程序异常严重影响了程序运行的稳定性。因此,程序人员必须要对此类错误进行预防和处理,对异常处理的过程即异常处理。

在工作和现实生活中,也有很多异常处理的事例。例如,在软件项目开发过程中,团队成员的突然离职、客户对需求的变更、开发进度拖延等情况的发生,都会导致项目开发过程出现异常,并需要项目经理及时处理这些异常情况。

异常不可避免,但可以对异常做出预测和预处理,预测什么情况下会出现异常,出现异常后如何处理。

例如,前面谈到的软件项目开发过程出现的异常,可以在项目管理计划书中针对团队成员离职、需求变更、进度拖延出现的异常,制定详尽的应对计划,该应对计划就是异常处理。

对于程序而言,内存溢出、数组越界、除零操作、对象没有实例化就使用、变量无赋值就使用等操作都会引发程序异常。因此,程序员在编写代码时,需要对上面的情况做出预测,并添加出现异常时的处理语句,以提高程序的稳定性。

在不支持异常处理的程序设计语言中,程序员为了检查可能发生的异常情况,需要使用很多的if—else语句,这就要求程序员非常清楚地知道是什么导致了异常的产生,以及异常的确切含义。

无异常处理机制的代码如下:

//除法计算
int div(int a,int b)
{
    int ret = -1;
    //预测传入参数a为空的异常处理代码
    if( a == null )
    {
        System.out.println("传入的参数a为空");
        return ret;
    }
    //预测传入参数b为空的异常处理代码
    else if( b == null )
    {
        System.out.println("传入的参数b为空");
        return ret;
 
    }
    //预测传入参数b不能为0的异常处理代码
    else if( b == 0 )
    {
        System.out.println("传入的参数b为0,b做为除数不能为0");
        return ret;
 
    }
    ret = a / b;
    return ret;
       
}

有异常处理机制的语言,没有必要去编写上述的这些if—else语句。在默认的情况下,异常会输出一个错误消息,并中止程序的执行。为了更好地处理异常情况,程序员通常会在程序中定义异常处理语句来捕获和处理异常情况。Java语言提供了try—catch语句来捕获和处理异常,try—catch语句后面会详细讲解。

使用try—catch语句对上面的例子代码提供异常处理的支持,修改后的代码如下:

//除法计算
public int div(int a,int b)
{
    int ret = -1;
    //try语句块用于捕获异常
    try {
        ret = a / b;
    }catch(Exception e1){
      //catch语句块用于处理异常
        System.out.println(e1.getMessage());
    }
    return ret;
}

采用try—catch语句不仅可以使代码变得更简洁,而且能为程序调试提供很大的方便,从而达到提高程序稳定性的目的。

■ 知识点拨

异常处理就是提前预测程序可能发生的所有异常情况,并通过Java提供的异常处理类捕获异常,编写异常处理代码。当出现异常后,程序执行的流程发生改变,程序的控制权转移到异常处理代码。

■ 思考与练习

编写一个ExceptionTest类,在main方法中使用try—catch语句捕获可能出现的异常和处理异常。


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论