Java异常必备知识点

Java异常框架

这里写图片描述

1.Throwble
    Throwable是Java语言所有错误或者异常的超类。
    Throwable包含两个子类:Error和Exception
2.Exception
    Exception及其子类是Throwable的一种形式,它合理的指出了应用程序想要捕获的条件。
3.RuntimeException
    RuntimeException是那些可能在Java虚拟机正常运行期间抛出的异常的超类。
    编译器不会检查RuntimeException异常。若代码会产生RuntimeException异常,则需要通过修改代码进行避免。
4.Error
    和Exception一样,Error也是Throwable的子类。用于显示合理的程序不应该视图捕获的严重问题,
    大多数这样的错误都是异常条件。编译器也不会检查Error。
5.自定义异常
    在Java中可以自定义异常,但是应该注意:所有的异常都应该是Throwable的子类,若希望是检查性异常类,
    需要继承Exception类,若希望是运行时异常类,则需要继承RuntimeException类。
Java异常机制中的关键字
try、catch、finally、throws、throw
(1)try/catch
try和catch关键字可以捕获异常。try/catch代码块放在异常可能发生的地方,
其代码块中的代码称为保护代码。catch语句中要包含异常类型的声明。当保护代码中
异常会被传递到catch块中。
try{
//程序代码
}catchException e){
//catch块
}
(2)throw/throws
throw关键字可以抛出一个异常,无论是新实例化的还是刚才捕获到的。
throws关键字房子啊方法签名的尾部。若一个方法没有捕获到一个检查异常,
那么该方法必须使用throws关键字来声明。一个方法可以声明抛出多个异常,多个异常之间用“,”分隔。
(3)finally
finally关键字用来创建在try代码块后面执行的代码块。无论是否发生异常,finally代码块中的代码都会执行。
使用了return或throw等终止方法的语句,则就不会跳出执行,直至停止。

注意:catch不能独立于try存在
     在try/catch后面添加finally并不是强制要求
     try代码块后面不能既没有catch也没有finally
异常的分类及常见的异常
异常分为运行时异常(RuntimeException)和非运行时异常。
运行时异常和非运行时异常的区别是运行时异常又被称为非检查异常,非运行时异常指的是检查异常。
运行时异常是指直接或者间接的继承RuntimeException的异常。非运行异常是指除了RuntimeException之外的其他异常,是程序逻辑错误,程序员应该积极的避免其出现的异常。Java编译器要求方法必须声明抛出可能发生的非运行时异常,到那时并不要求声明抛出未被捕获的运行时异常。
常见的运行时异常:
(1)NullPointerException(空指针异常):当操作一个空引用时会出现此异常。
(2)NumberFormatException(数字格式化异常):视图将字符串转化为一种数值类型,但是字符串不能转化为适当格式时,抛出此异常。
(3)ClassCastException(类型转换异常):强制类型转换类型不匹配时出现此异常。
(4)ArrayIndexOutOfBoundsException(数组下标越界异常):当使用一个不存在的数组的下标时出现此异常。
(5)ArithmeticException(数字异常):当出现异常的运算条件时出现的异常。
常见的非运行时异常:
(1)SQLException:提供关于数据库访问错误的异常
(2)IOException:当发生某种I/O异常时,抛出此异常。
(3)ClassNotFoundException:当应用程序试图使用Class类中的forName方法、loadClass方法时,抛出此异常。
Java中检查型异常和非检查型异常有什么区别
检查型异常(Checked Exception):这类异常都是Exception的子类。
非检查型异常(Unchecked Exception):Error和RuntimeException及其子类
主要区别在于其处理方法上。
   检查异常需要使用try,catch和finally关键字在编译期间进行处理,否则会出现编译期报错,
   RuntimeException是程序有逻辑错误,程序员应该避免此类错误的出现。
final、finally、finalize的区别
(1)final是一个修饰符。
如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承,
    因此一个类不能既被声明为abstract又被声明为final;
方法或者变量被声明为final,可以保证其在使用中不被改变;被声明的final变量
    必须在声明时给定初始值,而在以后的引用中只能读取,不可以进行修改;
    被声明为fina的方法同样也只能使用不能重载。
(2)finally用在异常处理时提供finally块来执行任何清理操作;若抛出异常,
    那么匹配的catch子句就会执行,然后控制就会进入finally块中(如果存在)。
(3)finalize是方法名,Java中允许使用finalize()方法在垃圾回收器将对象从
     内存中清理出去之前做必要的清理工作。这个方法是由垃圾收集器在确定对象
     没有被引用时对这个对象调用的。它是Object类中定义的,因此所有的类都继承了它。
     子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
Java中NullPointerException和ArrayIndexOutOfBoundException区别
这两个异常都是非检查异常,都继承自RuntimeException。
通常在操作一个空引用时会产生NullPointerException,如空引用调用属性或者方法时。
ArrayIndexOutOfBoundException是在使用一个不存在的数组下标时抛出。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值