ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

异常捕捉机制与捕捉到的异常

2022-06-24 12:01:46  阅读:108  来源: 互联网

标签:语句 自定义 抛出 try 捕捉到 捕捉 catch 异常


  Java异常捕捉机制

异常是指程序在执行过程中出现的意外事件,异常通常会使得程序的正常流程被打断。

  Java的异常处理方法

Java的异常捕捉和处理的语法格式:

try
{
//可能抛出异常的语句模块
} 
catch(异常类型1)
{
//处理异常类型1的语句
}
……
catch(异常类型n)
{
//处理异常类型n的语句
}
finally
{
//无论是否抛出异常都会被执行的语句
}

说明:

如果try模块中抛出异常,则try模块中异常点之后的语句将不会被继续执行
如果try模块中抛出异常,则重写的catch模块顺序去匹配异常的类型,匹配成功的catch模块将被执行,其余的catch模块不会被执行。
如果try模块中不抛出异常,则所有的catch模块都不会被执行
finally模块总是在try-catch语句结束的时候被执行
当try-catch-finally语句执行完毕之后,无论是否抛出异常,都接着执行后面的语句

3、异常的抛出和处理
  只有当异常在try模块中被抛出时,可以被catch模块所捕捉。 如果要在程序中由程序自己抛出一个系统未定义过的异常,则必须使用throw语句显示地进行抛出。
throw语句的语法是:

throw <异常类对象>;

1
注意:只有Throwable类及其子类对象才能被抛出、捕捉。
抛出异常后,对其捕捉和处理有两种情况:
①、在同一个方法中抛出并处理异常
在同一个方法中抛出并处理异常时,throw语句必须写在try模块中,通过try-catch-finally语句来完成异常捕捉。
②、在一个方法中抛出异常而在另外一个方法中处理异常
如果抛出异常和处理异常的不是同一个方法,则要求在抛出异常的方法定义后必须加入语句:throws Exception
然后,在另外的方法中调用此方法时,必须把调用的语句放在try模块中,然后通过try-catch-finally语句来完成异常捕捉。

4、自定义的异常类

  系统只会自动抛出系统定义的异常,因此自定义的异常只能人为判断后通过throw语句显示地抛出而无法由系统自动抛出。
自定义异常类:

class 自定义异常类 extends Exception
{
//类的属性、构造方法、其他方法等的定义
}
......
//在其他某个类的某个方法中使用此“自定义异常类”时
//实例化“自定义异常类”对象
自定义异常类 my_e=new 自定义异常类();
try{
     if(条件表达式)throw my_e;
     //其他语句
}
catch(自定义异常类 e)//捕捉“自定义异常类”异常
{
//捕捉到异常之后的处理程序
}

 

捕捉到的异常

public static void  f(){
    int[] arr = new int[10];
    arr[10] = 10;
}
public static void main(String[] args) {
    try {
        f();
    } catch (Exception e) {
        System.out.println("b");
        System.out.println(e.getMessage());
        System.out.println(e);
        e.printStackTrace();
    }
    System.out.println("main");
}

 

 

try {
            f();
        } catch (Exception e) {
            System.out.println("b");
            System.out.println(e.getMessage());
            System.out.println(e);
            e.printStackTrace();
            throw e;
        }
我们也可以通过throw e将异常再次抛出
当某一行代码发生异常时,会执行相同异常的代码
有不寻常的事情发生了
当这个事情发生的时候,原本打算要接着做的事情不能再继续了,必须得要停下来,让其他地方的某段代码来处理

 

标签:语句,自定义,抛出,try,捕捉到,捕捉,catch,异常
来源: https://www.cnblogs.com/x3449/p/16408292.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有