栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

异常的概念与处理

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

异常的概念与处理

什么是异常处理

       java编程中为了防止出现异常,程序中预先设置好对付异常的处理方法。

java中如何进行异常处理

        异常处理通过5个关键字来实现的

        try/  catch/  finally/   trow/  throws/

try(执行可能产生异常的代码)

catch(捕获异常)

finally(无论是否发生异常,代码总能执行)

throws(声明方法可能要抛出的各种异常)

throw(手动抛出异常)

使用try-catch块捕获异常,分为三种
    第一种请况:try块中所有语句正常执行完毕,不会发生异常,那么catch块中的所有语句
都不会实现。

public void method(){
    try{
        //代码段(此处不会产生异常)
        
    }catch(异常类型 e){

        //对异常进行处理的代码段
    }
        //代码段
}


    第二种请况:try语句块在执行中遇到异常,那么在try块中其余剩下的代码都将不会实现,系统
会自动生成相应的异常对象,如果这个异常对象与catch中声明的异常类型相匹配,则相应的catch
块都会执行。


public void method(){
    try{
        //代码段1
        //产生异常的代码段2
        //代码段3
    }catch(异常类型 e){
            //对异常进行处理的代码段4
    }
        //代码段5
}

    第三种情况:try语句块在执行中遇到异常,如果这个异常对象与catch中声明的异常类型不匹配,
程序会中断。
    

public void method(){
    try{
        //代码段1
        //产生异常的代码段2
        //代码段3
    }catch(异常类型 e){
            //对异常进行处理的代码段4
    }
        //代码段5
}

在catch块中处理异常

        加入用户自定义处理信息

System.err.println(“出现错误:被除数和除数必须是整数,除数不能为零”)

异常对象常用的方法处理信息

方法名说明
void printStackTrace()输出异常的堆栈信息
String getMessage()

返回异常信息描述字符串,

是printStackTrace()输出信息的一部分

常见的异常类型

Error 与Exception 的区别

        答:都继承Throwable这个类

Error是java程序在编译阶段出现的问题,代码将无法通过编译。

Exception 是java程序在运行阶段时才出现的问题,能通过编译,但是不能完整运行。

 多重catch块

        一段代码可能会引发多种类型的异常,在上面计算并输出商的实例中,其实至少存在

两种异常情况,输入非整数内容和除数为0,我们统一按照Excption类型捕获。

如果要分别捕获,就可能使用多重catch块。

引发多种类型的异常

        排列catch语句的顺序:先子类后父类

        发生异常时按顺序逐个匹配

        只执行第一个与异常匹配的catch语句

多重catch块
public void method(){
    try{
        //代码块
        //产生异常(异常类型2)
    }catch(异常类型1  e){
            //对异常进行处理的代码段
    }catch(异常类型2  e){
            //对异常进行处理的代码段
    }catch(异常类型3  e){
            //对异常进行处理的代码段
    }
    //代码段
}

执行顺序:try————(发生异常)————(产生异常对象—)———与异常类型1不匹配————与异常类型2匹配

        
————(进入catch块)————catch————程序继续执行————try-catch块后的代码块


存在return的try-catch-finally块
     try{
        //代码块1
        //产生异常的代码段2
    }catch(异常类型1  e){
            //对异常进行处理的代码段3
      return;
    }finaly{
        //代码段4
    }
}

try——发生异常1——产生异常对象——异常类型匹配——进入catch2——执行finally块3——return4
    

 面试题:

        try-catch块中存在return语句,是否还执行finally块,如果执行,说出执行顺序?

        1.执行

        2.1.发生异常,进入异常类型匹配,在进入catch块2,在进入finally语句块,最后执行return。

        try-catch-finally块中,finally块为不执行的情况是什么?

        除非在try块或者catch块中调用了退出虚拟机的方法(即System.exit(1);)

否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块总是会被执行的。

声明异常rows

public class Test{
//方法
    public static void divide()throws Exceptior{————> 声明异常,多个异常用逗号隔开
        //可能出现异常代码
    }
    public static void main(String[] args){
        try{
             //对象调用方法
            divide();
        }catch(Exception  e){————>  方式1:调用者处理异常
            e.printStatckTrace();
        }
     public static void main(String[] args)throws Exception{————>方式2:调用者继续声明异常
            //对象调用方法                (main方法声明的异常有Java虚拟机处理)
            divide();
        }
    }
}
    面试题

 自定义异常

        当JDK 中的异常类型不能满足程序的需要时,可以自定义异常类。

使用自定义异常的步骤:

1.定义异常类,

2.编写构造方法,继承父类的实现,

3.实例化自定义异常对象

4.使用throw抛出

继承Throwable 类,继承Excepion或者RuntimeException

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号