温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java异常有哪些及怎么处理

发布时间:2022-02-21 16:27:31 来源:亿速云 阅读:138 作者:iii 栏目:开发技术

这篇“java异常有哪些及怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java异常有哪些及怎么处理”文章吧。

什么是异常?

程序的异常指的是程序在运行时,发生了一些不被期望的事件,而这些事件阻止了程序按照预期进行正常执行,这就是异常。

举个例子:程序需要打开一个文件并做一些处理,但是这个文件并不存在。java代码在运行到打开这个文件这个步骤,因为没有这个文件,也就没有办法打开这个文件,没有办法打开文件也就没有办法进行文件的处理。这就是一个异常(一个文件打开异常)。

产生异常的原因

因为程序在运行时总是可能会发生一些无法预料到的环境,所以产生的异常各有不同,比如说文件不存在,打开文件操作就会出现异常。也有可能是java虚拟机内存溢出,也会导致异常(通常出现这种问题都是代码没有优化才会出现)。也有程序员在开发的时候不遵守规范导致的异常(比如除数不能为零,当除数为零是会报除零异常,还有数组操作越界异常和空指针异常,这些都是初学者比较常见的异常)。

异常的分类

根据上面所举的例子,大致可以将java的异常分成三类,分别是:

错误Error

这种异常是系统级别的异常,比如说Java虚拟机内存溢出。这种异常在编译时不会出现,在运行时也不会出现,但在使用不当的情况下会出现。比如在java虚拟机最大可使用内存为16m的情况下,不停地给StringBuffer追加字符,这样子内存很快就会被用光,这样就会出现OutOfMemoryError异常。

运行时异常RuntimeException

这种异常通常出现在运行时,所以被称为运行时异常。这种异常在编译时不会出现,一旦代码运行,就会出现异常。比如除零操作,这样的代码是可以编译通过的,但在运行的时候就会报错。与除零异常同为运行时异常的还有:空指针异常和下表越界等等。

可查异常 CheckedException

这种异常是必须处理的异常。这种异常通常在编译时出现报错,比如之前提到的文件不存在异常。这种异常必须进行处理,否则编译器不会通过编译,而处理方式也就是接下来要介绍的try-catch语句的使用。

异常的处理

在java中,有一组关键字被用来进行异常的捕捉,它就是try-catch-finally。代码如下所示:

 try{
    // 尝试执行的可能会抛出异常的代码
 }catch(异常类型1 异常的变量名1){
    // 当异常抛出时,根据异常的类型和变量名执行对应的catch语句
    //catch语句用来捕获异常。
 }catch(异常类型2 异常的变量名2){
    // 程序代码
 }finally{
    // 不管最终如何,一定要执行的语句,一般做清理类型等收尾善后性质的工作
    //finally不是必要出现的
 }

此外,还有一组关键字被用来抛出异常,它就是throws/throw关键字:

如果一个方法没有捕获一个可查异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。

也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

下面方法的声明抛出一个 RemoteException 异常:

import java.io.*;
public class className
{
   public void deposit(double amount) throws RemoteException
   {
      // Method implementation
      throw new RemoteException();
   }
   //Remainder of class definition
}

一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

例如,下面的方法声明抛出 RemoteException InsufficientFundsException

import java.io.*;
public class className
{
   public void withdraw(double amount) throws RemoteException,
                              InsufficientFundsException
   {
       // Method implementation
   }
   //Remainder of class definition
}

什么异常需要捕捉

通常错误,运行时异常和可查异常都可以被捕捉,但是一般情况下只有可查异常需要捕捉(因为不捕捉的话连编译都过不了)。

以上就是关于“java异常有哪些及怎么处理”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI