所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

java中具体怎样捕获异常?

发布时间:2020-04-15 16:10:18

资讯分类:java  捕获  异常  异常  捕获  程序
java中具体怎样捕获异常?

我是点点小萱,这个问题我来回答。

在讲解怎么去捕获异常之前,我们先来了解下java中的异常具体是什么。

01.异常是什么?为什么要处理异常?

在java中,异常是程序中的一些错误,但要记住并不是所有的错误都是异常,因为有些错误是可以避免的,比如说,你的代码结尾少了一个分号,那么运行出来的结果是提示错误

而异常是不可避免的,我们只能通过处理机制去处理它。

通常异常是指不期而至的各种状况,如:文件找不到、网络连接失败、除0操作、非法参数等。异常是一个事件,它通常发生在程序运行中,干扰了正常的指令运行,导致程序中断

我们来看看异常的体系结构:

在java中,异常就是一个对象,所有的异常都有一个超类java.lang.Throwable

异常的两大类:错误和异常

在Exception分支中,我们可以看到有一个重要的子类:运行时异常,该异常基本包含了所有我们平常遇到的异常,比如:空指针异常NullPointerException,类找不到异常ClassNotFoundException,数组下标越界异常ArrayIndexOutOfBoundsException,算术异常ArithmeticException,资源丢失异常

MissingResourceException。


如果我们不对异常进行正确的处理,放置不管那会怎么样?

毫无疑问,异常会导致程序中断执行。

一旦产生异常,如果不做处理的话,那么异常之后的程序语句将不会被执行,直接结束当前程序,并将错误直接报告给客户,这将会造成不必要的损失。

所以我们在程序设计的时候,必须要考虑到各种异常的发生,并且对将会发生的异常做好相应的、正确的处理,这样才能保证程序的正常执行。


那么下面就来具体介绍怎样处理程序中的异常。

02.异常的处理方法是什么?

在java程序中,一般处理异常有2种方法:

一种是抛出异常:

从当前情景中跳出,结束当前环节,同时把异常问题提交给上一级环境,让上级去处理。当前环节不对异常做任何的处理,直截了当的将问题抛出去。

抛出异常,我们通常要用到java关键字throw

在java中常用的语法是这样的:

public static void main(String[] args) {

String obj = null;

if(StringUtils.isEmpty(obj)){

System.out.println("obj对象为空");

throw new NullPointerException();

}

System.out.println("obj对象不为空");

}

将异常抛出,它将会在其他的地方得到执行或者相应的处理。

另外一种是捕获异常:

在当前环节处理异常:

①在try语句中对此异常对象进行捕捉。

②产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功则执行catch语句中的代码。

捕获异常的基本处理格式try—catch。try中捕获异常,catch中处理对应的异常。

try中捕获异常,出现异常之后的代码将不再被执行,而是跳转到相应的catch语句中执行,用于处理异常。

public static void main(String[] args) {

String obj = null;

try{

if(StringUtils.isEmpty(obj)){

System.out.println("obj对象为空");

}

}catch(ArithmeticException e){

System.out.println("捕获算数异常");

}catch(Exception e){

System.out.println("捕获异常");

}

}

需要注意的是:对于有多个子句的异常程序而言,应该尽量将捕获底层异常类的子句放在前面,同时尽量将捕获相对高层的异常类的子句放在后面。


另外对于异常,我们也可以设置其统一的出口,使用fially来完成。

// 定义除法操作,如果有异常,则捕获异常并处理

public int div(int m, int n) throws Exception {

System.out.println("***** 计算方法开始 *****");

// 定义局部变量

int temp = 0;

try {

// 计算,但是此处有可能出现异常

temp = m / n;

} catch (Exception e) {

//抛出异常

throw e;

} finally {

// 不管是否有异常,都要执行统一出口

System.out.println("***** 计算方法结束 *****");

}

return temp;

}

这个例子,在我们开发过程中,是最常用的捕获异常的方法。

最后添加finally语句块,释放占用的资源。


以上就是小编的回答了,纯属个人观点,如有不足之处,欢迎点评、建议。

我是点点小萱。

java中具体怎样捕获异常?

对于异常java有俩种方式:

1、抛出(throws Exception):

当一个方法采取抛出异常的话,那么在该方法中只需要在方法名的后边加入 throws Exception即可 无需其他操作,而在调用此方法的方法中编译工具会强制其捕获异常或抛出异常(即谁用谁捕获,而且一定会捕获);

2、捕获(try(){}catch{}):

try{//调用时可能发生异常的代码(例如 throws Exception的那个方法 )

}catch{//处理异常的代码(此处一般是 记录日志 或者 返回给前台一个状态),让程序在异常之后执行该代码

}finally{

//必须执行的代码(此地方一般执行的是关闭操作如 注册驱动、游标、流等等)}

百度搜索圈T社区 免费行业视频教程

www.aiquanti.com

留言与评论(共有 0 条评论)
   
验证码:
Top