首页 > 其他分享 >异常处理总结

异常处理总结

时间:2022-11-01 19:46:56浏览次数:78  
标签:总结 处理 抛出 代码 try catch 异常 throw

异常是我们无论在日常学习还是工作时,都会遇到并且为之苦恼的,很多方法进行操作时都可能产生异常。异常是不正常情况,和错误稍有不同,这需要搞清楚,异常是一个运行时可能产生的不正常行为,一旦出现,java程序的执行顺序就被破坏,java程序就必须处理,不然整个程序就没法完成任务,而错误是指程序的运行错误,实际中,异常的寻找往往比报错更加困难费解。

Java类库的每个包中都定义了异常类,所有这些类都是Throwable类的子类。Throwable类派生了两个子类,分别是Error类和Exception类,其中,Eror类及其子类用来描述Java运行系统中的内部错误以及资源耗尽的错误,这类错误比较严重。Exception类称为非致命性类,可以通过捕捉处理使程序继续执行。Exception类又可以根据错误发生的原因分为运行时异常和非运行时异常。

   在java中, java异常是一个对象,通过5个关键字来进行管理:try,catch,throw,thorws和finally。try和catch一般成对出现(也可以只有try和finally),且是java处理异常时必须用到的(如果异常抛给JVM处理则不需要用到),try和catch就是对可能出现异常的代码进行监控及对描述出现异常后进行处理的方法。这里我们还要涉及到finally(记住有别于final功能完全不一样),finally描述的代码是无论异常是否出现必须进行的操作,如关闭文件,数据流等,比如下列代码

 try {

             i=A.add(B);

              

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }    try catch 错误处理;

他的执行规则是:首先执行try中的代码 如果抛出异常会由catch去捕获并执行 如果没有发生异常 catch去捕获会被忽略掉 但是不管有没有异常最后都会执行。

try 语句使你能够测试代码块中的错误。

catch 语句允许你处理错误。

throw 语句允许你创建自定义错误。(抛出错误)

finally 使你能够执行代码,在 try 和 catch 之后,无论结果如何。

如下列测试代码

 

 

某种程度上try 和catch一般是在预计某段代码可能会出错(比如浏览器兼容问题)或者想故意利用这种错误来达成目的(这其实是一种偷懒的行为)时,就可以把这段代码放入try内,然后当出现错误时就会自动去执行catch里的代码

 在catch代码块中使用了Exception对象的printStackTrace()方法输出了异常的栈日志,除此之外,Exception对象还提供了其他的方法用于获取异常的相关信息,其最常用的3个方法如下:

(1)  getMessage)方法:获取有关异常事件的信息。

(2)  toString)方法:获取异常的类型与性质。

(3)  printStackTrace()方法:获取异常事件发生时执行堆栈的内容。

 

注意:

 

        有时为了编程简单会忽略catch代码块后的代码,这样try..catch语句就成了一种摆设,一旦程序在运行过程中出现了异常,就会导致最终运行结果与期望的不一致,而错误发生的原因很难查找。因此要养成良好的编程习惯,最好在catch代码块中写入处理异常的代码。

    java的内置异常主要由java.lang提供,常见的异常有ArrayIndexOutOfBoundsException数组索引越界,ClassCastException无效转换,IndexOutOfBoundsException其他类型的索引越界,NullPointerException空应用异常,UnsupportedOperationException不支持操作异常,ClassNotFoundException类未找到。

    java出了内置了很多异常类以外,还支持我们自己创建异常类,它继承Exception,当然它也是继承了Throwable定义的方法。在编写代码时,我们必须得抛出异常,才能被捕捉,然后再处理,所以在创建自己后,必须在运行可能出现异常的代码中显示地抛出异常。

      如果某个方法可能会发生异常,但不想在当前方法中处理这个异常,则可以使用throws、throw关键字在方法中抛出异常,本节将对如何在方法中抛出异常进行讲解。

 

 

 

如在Servlet中,我们便使用了throws来抛出异常

最后说一下throw和throws的区别:throw是显示的抛出异常,它的一般形式是throw ThrowableInstance,ThrowableInstance必须是一个Throwable的对象或者子类对象。throw语句后面,执行流会立即停止,其后的任何语句将不再执行(有同样功能的是return语句),然后再检查最近的try/catch语句块(可能是try/finally语句块),如果找到匹配的语句块就将控制转移到那条语句,如果没找到,则会执行默认的异常处理程序——停止程序,并输出堆栈踪迹。而throws是在一个方法可能引起一个不能处理的异常时进行标示的,即警惕调用者注意该异常。简单的说throw和throws都是抛出异常,throw是在方法体中抛出异常,而throws是在方法声明中。

注意:

        使用throws为方法抛出异常时,如果子类继承父类,子类重写方法抛出的异常也要和原父类方法抛出的异常相同或是其异常的子类,除非throws异常是RuntimeException。

 throw 通常用于在程序出现某种逻辑错误时,由开发者主动抛出某种特定类型的异常,

 说明:

如果方法抛出了异常,在调用该方法时,必须为捕捉的方法处理异常,当然,如果使用throws关键字将异常抛给上一级后,不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。

其他异常处理具体举例代码我们可去进行代码测试研究

(17条消息) 第八章 异常处理总结_Dounp2580的博客-CSDN博客

标签:总结,处理,抛出,代码,try,catch,异常,throw
From: https://www.cnblogs.com/azwz/p/16848888.html

相关文章

  • Android开发 对接微信分享SDK总结
    原文:Android开发对接微信分享SDK总结-Stars-One的杂货小窝公司项目需要对接微信分享,本来之前准备对接友盟分享的,但友盟的分享实际参数太多,而我又只需要对接一个微信......
  • 深度学习——卷积神经网络压缩方法总结(等待补充)
    卷积网络压缩方法总结卷积网络的压缩方法​​一,低秩近似​​​​二,剪枝与稀疏约束​​​​三,参数量化​​​​四,二值化网络​​​​五,知识蒸馏​​​​六,浅层网络​​我们知......
  • 如何优雅处理前端异常?
    版权声明:文章首发于Jartto'sblog,转载文章请务必以超链接形式标明文章出处,作者信息及本版权声明。站点图片托管在Github,如果打不开,请点击这里。前端一直是距离用户......
  • 深度学习从入门到实战——机器学习常用算法总结
    机器学习笔记​​一级目录​​​​机器学习​​​​定义​​​​分类​​​​学派分类​​​​按照学习方式分类​​​​业务领域分类​​​​学习步骤​​​​学习技巧​​......
  • Navicat Premium表打不开锁死处理
    状况:MQSQL左关联查询超时,通过给表加索引解决超时问题导致表被锁死无法访问,解决表锁死问题方式如下:第一种方式:打开【Navicat】软件,点击【工具】,点击【服务器监控】,点击对......
  • SQLSERVER 恢复命令restore总结
    一、概述SQLSERVER的备份与恢复命令:BACKUP和RESTORE是一对孪生兄弟,在前一篇文章中我们介绍了BACKUP命令及其选项的使用,就像BACKUP命令一样,RESTORE命令也有很多的选项,......
  • android中EditText有光标不弹出软键盘处理(转)
    当我们点击Edittext时(获得焦点),都会弹出系统默认的软键盘,在有时候会需要做到点击EditText不想显示软键盘,这时候我们就要想方法把软键盘给你从隐藏掉。有几种方法,方法一:在An......
  • 四则运算中对负数的处理
    解决方法:在负数前面进行补0,如-a-100->(0-a)-100,之后用逆波兰表达的方法计算即可。java测试代码:publicstaticvoidmain(String[]args)throwsException{......
  • 深度学习从入门到精通——基于深度学习的地震数据去噪处理
    传统机器学习SVM,boosting,bagging,knn深度学习CNN(典型),GAN地震应用方向叠前地震数据随机噪声去除,实现噪声分离面波去噪面波作为很强的干扰波出现在地震勘探中,大大......
  • 机器学习从入门到精通——决策树算法概述以及实现总结
    决策树​​决策树​​​​定义​​​​决策树​​​​概念​​​​熵​​​​条件熵​​​​经验熵,经验条件熵​​​​信息增益​​​​算法​​​​信息增益算法​​​​I......