异常:
异常是指当我们编写代码的过程中,或者代码运行的过程中发生错误,如果这些错误不处理可能导致程序不能正常
工作,甚至程序崩溃。

Error:在英文中代表很严重的错误,在Java中通常代表系统错误,无法通过捕获来解决,这种错误程序员
不需要担心,一般的常见Error: 断电,电脑死机,电脑炸了,JVM内部的一些错误。

Exception:jdk1.0出现相比于Error来说级别更低,而且可以被程序员处理,如果不及时处理的话小则方法
终止,大则直接导致程序崩溃。

Exception的分类:
1:运行时异常,在编写(编译)代码的时候不会报错,但是在运行的时候可能因为某些思维不谨慎等原因而出现
异常,可以根据需求进行更改,一般的运行时异常都可以通过业务逻辑判断来实现避免。

2:编译期异常,在编写(编译)代码的时候(一般出现在调用某些方法时),强制要求必须处理的异常,如果不处理
则代码会在编译期间报错,这些异常一般由方法或类的开发者制定。

try: 其作用域中存放所有有可能出现异常的代码,当其中代码出现异常的时候try中后面的代码不会再执行,
而是直接把异常交给catch然后执行catch的代码。

catch:会对try中出现的异常进行捕获,可以多个catch配合使用,但是使用多catch的时候要注意按照异常
范围从小到大进行捕获。

finally:不管try中的代码是否出现异常都会执行finally里面的代码,一般用于资源释放。

异常捕获总结:
1:RuntimeException 其内全部都是运行时异常,所有的运行时异常都继承于RuntimeException,不会要求
我们强制处理,可以根据自己业务需求来选择处理。
2:异常的捕获一定要按照从小到大来进行捕获,虽然直接捕获Exception可以捕获到所有异常,但是这样的话
所有的异常都会按照一个方式来进行处理,在某些项目中并不适用,所以异常最好是分开捕获(同级异常不分
先后顺序)。
面试题:
一:异常的处理流程:
1:当程序出现异常的时候,那么会由JVM会根据异常的类型实例化一个异常对象(这个过程由JVM负责,不需要我
们关心)。
2:当实例化对象后会检测我们代码中有没有try语句来捕获异常实例对象如果没有存在则交给JVM自动处理(
JVM的处理方式:输出异常信息然后结束程序(后面代码都不在执行)。
3:如果存在有异常处理,就会使用try语句来捕获异常实例对象,然后由try语句后面的每一个catch去进行
匹配,如果有符合的catch则执行catch里面的代码,如果没有则继续匹配下一个catch
4:不管catch中是否匹配成功,如果代码中存在有finally的话就会继续执行其中的代码,当执行完成finally
中的代码后,如果之前的异常被catch成功匹配则继续往下执行,如果没有被catch成功匹配则会交由JVM处理(
输出异常信息,结束程序)

二:return 与finally的执行顺序
先执行return 然后把返回的值写到内存中,然后执行finally语句,当执行完finally语句后再把内存中
的值返回给调用者(可以理解为return 执行了两次)。

三:什么情况下finally不执行
1:在try中关闭了JVM      System.exit(0);
2:在执行try之前先执行return 
3:不可抗拒的条件(死机,断电等.....)

四:自定义异常
如果需要自定义编译型异常只需要继承Exception即可
如果需要自定义运行期异常只需要继承RuntimeException即可

五:Throws与Throw
Throws与Throw两者都不解决异常,只是负责把异常抛出而已。
Throws在方法体上(方法参数列表后面)使用Throws 关键字把需要抛出的异常写上即可,当方法抛出异常后
谁调用这个方法谁负责处理这个异常,如果调用者没有处理异常继续向上抛出的话异常最终由JVM进行处理。

Throw在方法内部抛出异常,在定义方法的时候如果传入的参数不符合我们方法规定则可以使用Throw抛出
一个异常并且附带提示信息。需要注意的是,如果在方法中定义了编译期异常一般都是为了提醒调用者
这个方法可能会出现一些问题及会出现什么问题,所以不要在方法内自己去try而是交给调用者去处理

如果不重写:
    1:内存地址

如果重写:
    1:内存地址          // 如果内存地址相同  在此返回
    2:对象是否为null  // 如果对象为null  在此返回 
    3:双方是否归属同一个class  // 如果两个class 不一致 在此返回    
    4:对象里面的具体值是否一致

Exception 异常和自定义异常相关推荐

  1. 抛出运行时异常的目的_「JAVA」运行时异常、编译时异常、自定义异常,通过案例实践转译和异常链...

    Java基础之异常处理机制 什么是异常 从事Java开发的小伙伴对于"异常"应该不陌生,因为每天都会遇到不少异常,或捕获,或抛出.那究竟什么是异常?异常即非正常的,不同于平常.一般 ...

  2. Java 中常见的异常和自定义异常

    常见异常: java.lang.nullpointerexception    这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者 ...

  3. 异常概述、常见异常 、自定义异常 、重载重写的异常区别

    1.异常概述         程序运行过程中任何打断程序正常流程的情况称为异常或错误.比如:文件打不开.网络中断.操作符越界.类加载找不到等. Java程序在执行过程中所发生的异常事件可分为两类:   ...

  4. PLSQL——动态SQL、异常(预定义异常、非预定义异常、自定义异常)、引发应用程序错误

    1.动态 SQL 动态 SQL 是指在PL/SQL程序执行时生成的 SQL 语句 编译程序对动态 SQL 不做处理,而是在程序运行时动态构造语句.对语句进行语法分析并执行 DDL 语句命令和会话控制语 ...

  5. 解决“The type initializer for‘Oracle.DataAccess.Client.OracleConnection‘ threw an exception ”异常

    解决"The type initializer for'Oracle.DataAccess.Client.OracleConnection' threw an exception " ...

  6. java异常大全,如何处理异常,如何自定义异常

    此文章截图转载自:java异常大全!如何处理异常!如何自定义异常!_qq1328585964的博客-CSDN博客_java 异常大全s 我怕文章莫名消失所以转载下!!!我收藏的文章偶尔会没有

  7. Interrupted Exception异常可能没你想的那么简单!

    摘要: 当我们在调用Java对象的wait()方法或者线程的sleep()方法时,需要捕获并处理InterruptedException异常.如果我们对InterruptedException异常处理 ...

  8. java 异常 中英文_史上最全的Java中所有Exception异常中英文对照

    Java中所有Exception异常中英文对照AclNotFoundException, 如果对不存在的访问控制列表进行访问,则会 ArithmeticException 算数异常 ArrayInde ...

  9. python读取日志错误信息_使用Python将Exception异常错误堆栈信息写入日志文件

    假设需要把发生异常错误的信息写入到log.txt日志文件中去: import traceback import logging logging.basicConfig(filename='log.tx ...

最新文章

  1. Element-ui自定义主题换肤
  2. 网易云信阮良: 让客户能够连接一切,把整个精彩的世界连接起来
  3. Linux设备模型组件-类设备-设备类及subsystem
  4. 牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案
  5. Mysql索引使用情况_介绍mysql索引失效的情况
  6. 催人泪下!做技术打铁还需自身硬
  7. 怎么清洁计算机主机内部,详细说明清理网吧中计算机主机的正确方法
  8. 直接选择排序与冒泡排序
  9. X战警大战复联要来了?迪士尼收购21世纪福克斯后开始狂秀IP...
  10. CCNA学习笔记(一)网络互联基础
  11. 英特尔将开源进行到底!
  12. Ajax技术复习---狂神笔记
  13. [全程建模]rose工具如何打开两个mdl文件问题
  14. python range 小数_python中如何表示一个无限循环小数?(不用分数的形式)python,使用range语...
  15. 奇点云数据中台技术汇 | 数据治理——企业数字化转型的基石
  16. 思科WLC与AP无法正常Join
  17. 微信内隐藏的一个修复功能
  18. 办公邮箱哪个比较好,企业电子邮箱官网在哪里?
  19. 【转】Maven 入门
  20. 持安科技CEO何艺:零信任在实战攻防演练中的价值

热门文章

  1. A Comparison of CNN-Based and Hand-Crafted Keypoint Descriptors论文阅读笔记
  2. 微信H5页面源码如何看
  3. 51单片机调整时钟Proteus仿真
  4. arduino 的 oled时钟简单显示
  5. Photoshop入门教程:画笔工具轻松打造轻纱效果
  6. Springboot 拦截器链 - 加载拦截器
  7. 下载及安装NCCL教程
  8. 小学计算机教案2018六年级,2017年小学六年级下册信息技术教学计划
  9. 如何处理Git中没有小绿勾的问题
  10. 复选框的对勾颜色怎么改