首页
学习
活动
专区
圈层
工具
发布

初识JAVA:异常处理

catch块中间泛化程度越低的异常需要越放在前面捕获,泛化程度高的异常捕获放在后面,这样的好处是如果出现异常可以近可能得明确异常的具体类型是什么。  ...3.延迟捕获 延迟捕获说的是对异常的捕获和处理需要根据当前代码的能力来做,如果当前方法内无法对异常做处理,即使出现了检查异常也应该考虑将异常抛出给调用者做处理,如果调用者也无法处理理论上他也应该继续上抛...但是也避免了不恰当的处理。...对于事先无法预判的异常需要对其进行处理。 异常分运行时异常 RuntimeException 和 检查异常Checked Exception,运行时异常一般用在由于接口方法使用不当的时候。...使用try-catch语句块处理时一般需要注意以下几方面 try语句块内要分清稳定代码和非稳定代码,对于稳定的不会出现异常的代码不要放到try语句块中catch捕获的异常一定要处理。

34230

JAVA异常处理的原则

catch块中间泛化程度越低的异常需要越放在前面捕获,泛化程度高的异常捕获放在后面,这样的好处是如果出现异常可以近可能得明确异常的具体类型是什么。  ...3.延迟捕获 延迟捕获说的是对异常的捕获和处理需要根据当前代码的能力来做,如果当前方法内无法对异常做处理,即使出现了检查异常也应该考虑将异常抛出给调用者做处理,如果调用者也无法处理理论上他也应该继续上抛...但是也避免了不恰当的处理。...对于事先无法预判的异常需要对其进行处理。 异常分运行时异常 RuntimeException 和 检查异常Checked Exception,运行时异常一般用在由于接口方法使用不当的时候。...使用try-catch语句块处理时一般需要注意以下几方面 try语句块内要分清稳定代码和非稳定代码,对于稳定的不会出现异常的代码不要放到try语句块中catch捕获的异常一定要处理。

1.4K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    碰见异常 你是选就地正法 还是甩锅大法 码思客

    多个异常的捕获结构 上面的例子是使用Exception捕获的异常,其实理论上来说,应该使用最准确的异常来捕获,由于Exception是所有异常的父类,所以使用Exception没有问题,但是最适当的方式是使用...使用子类捕获 当一段逻辑中有可能出现多个异常需要捕获的时候,如果直接使用Exception,那么只能执行一个异常逻辑,而不能将不同的异常区分开。这样就导致无法根据不同的异常进行不同的异常处理。...finally的特性是,不论在catch中是否出现异常,finally中的代码都会被执行。...因为有一些代码如果写在try中,如果出现异常,那么这些代码是可能不会被执行的,如果写在catch中,如果不发生异常也不会执行,所以需要一个地方来写无论是否出现异常都会被执行的代码。 ?...需要注意的是throw只是抛出异常的方式比较灵活,可以在代码逻辑中抛出异常,而抛出异常以后,上级的处理逻辑和throws是一样的,要么继续往上级抛异常,要么捕获异常。

    61640

    Java Exception

    Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。...注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。...,也可以不处理。...Java方法在运行过程中出现异常,则创建异常对象。将异常抛出监控区域之 外,由Java运行时系统试图寻找匹配的catch子句以捕获异常。...由于检查运行时异常的代价远大于捕捉异常所带来的益处,运行时异常不可查。Java编译器允许忽略运行时异常,一个方法可以既不捕捉,也不声明抛出运行时异常。 例3 不捕捉、也不声明抛出运行时异常。

    1.1K51

    【Python】异常处理 ③ ( 捕获所有类型的异常 | 默认捕获所有类型异常 | 捕获 Exception 异常 )

    一、Python 默认捕获所有类型异常 1、默认捕获所有类型异常 - 无法获取异常类型 使用 try-except 语句 , 不指定异常类型 , 默认就可以捕获所有类型的异常 ; 语法如下 : try:...可能出现异常的代码块 except: 出现异常后执行的代码块 这种情况下 , 可以捕获异常 , 但是无法获取异常类型 ; 2、代码实例 - 默认捕获所有类型异常 代码实例 : """ 异常处理操作...类型异常 - 可获取异常类型 在 Python 中 , 可以使用try-except语句捕获所有类型的异常 ; 使用 try-except 语句时 , 可以将所有可能引发异常的代码放在 try 块中..., 然后使用 except 块来捕获所有类型的异常 ; 在 except 块中 , 可以指定要捕获的异常类型 , 或者使用 Exception 来捕获所有类型的异常 ; 使用 try-except 语句..., 可以捕获异常 , 但是无法获取异常类型 ; 2、代码实例 - 捕获 Exception 异常 代码实例 : """ 异常处理操作 代码示例 """ try: num = 1 / 0

    4K30

    NodeJS的异常捕获

    正文 由于nodejs是非阻塞单进程单线程的,一旦nodejs抛出异常,整个服务就会停掉。服务将会非常不稳定。...错误异常有两种场景的出现, 一种是代码运行中throw new error没有被捕获 另一种是Promise的失败回调函数,没有对应的reject回调函数处理 针对这两种情况Nodejs都有默认的统一处理方式...但是到了 Node.js,由于 try/catch 无法捕捉异步回调里的异常,Node.js 原生提供 uncaughtException 事件挂到 process 对象上,用于捕获所有未处理的异常。...try { asyncError() } catch (e) { /*异常无法被捕获,导致进程退出*/ console.log(e.message) } 异步异常 callback...} }) .then(() => { }) .catch((e) => { /*处理异常*/ console.log(e.message) }) Promise同样无法处理异步代码块中抛出的异常

    7.1K50

    Java异常处理

    即程序在运行时由于外界因素造成的一 般性异常 编译器要求Java程序必须捕获或声明所有编译时异常 对于这类异常,如果程序不处理,可能会带来意想不到的结果。...因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着 如: SQLException , IOException,ClassNotFoundException...: try - catch 中捕获异常,如果出现异常,程序会根据异常类型找到对应catch 中执行代码 try{ //可能出现异常的代码 }catch(异常类 参数e ){ //用来捕获异常的类型...,不是这种类型无法捕获的; system.out.print(e.getMessage()); // 控制台输出!...* * 体会2:开发中,由于运行时异常比较常见,所以我们通常就不针对运行时异常编写try-catch-finally了。

    66710

    深入理解java异常处理机制

    Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。...由于检查运行时异常的代价远大于捕捉异常所带来的益处,运行时异常不可查。Java编译器允许忽略运行时异常,一个方法可以既不捕捉,也不声明抛出运行时异常。 例3  不捕捉、也不声明抛出运行时异常。...捕获到异常,catch语句块里没有处理此异常的情况:当try语句块里的某条语句出现异常时,而没有处理此异常的catch语句块时,此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally...,找到与之对应的处理程序,其他的catch语句块将不会被执行,而try语句块中,出现异常之后的语句也不会被执行,catch语句块执行完后,执行finally语句块里的语句,最后执行finally语句块后的语句...(4)在出现异常方法的调用者中捕获并处理异常。 在上面的“使用throw抛出异常”例子已经提到了。

    95220

    异常类知识详解

    二:异常的分类: Error表示JVM无法处理的错误,而Exception又分为两种 :受检异常:要用try...catch...捕获异常并处理,并可以从异常中可以恢复。...三:关键字 1.try:用于监听,可能抛出的异常代码放在try语句块中,发生异常则向外抛出。 2.catch:用于捕获异常,用来捕获try语句块中抛出的异常。...:try语句块中的语句逐一被执行,程序将跳过catch语句块,执行finally语句块和其后的语句; 当try捕获到异常,catch语句块里没有处理此异常的情况:当try语句块里的某条语句出现异常时,...:在try语句块中是按照顺序来执行的,当执行到某一条语句出现异常时,程序将跳到catch语句块,并与catch语句块逐一匹配,找到与之对应的处理程序,其他的catch语句块将不会被执行,而try语句块中...newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常 六:异常例题:  1.需求分析1: /** * (1)声明一个Rectangle矩形类, * - 属性:length

    63610

    深入理解java异常处理机制

    Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。...由于检查运行时异常的代价远大于捕捉异常所带来的益处,运行时异常不可查。Java编译器允许忽略运行时异常,一个方法可以既不捕捉,也不声明抛出运行时异常。 例3  不捕捉、也不声明抛出运行时异常。...捕获到异常,catch语句块里没有处理此异常的情况:当try语句块里的某条语句出现异常时,而没有处理此异常的catch语句块时,此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally...,找到与之对应的处理程序,其他的catch语句块将不会被执行,而try语句块中,出现异常之后的语句也不会被执行,catch语句块执行完后,执行finally语句块里的语句,最后执行finally语句块后的语句...newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常  6.自定义异常 使用Java内置的异常类可以描述在编程时出现的大部分异常情况。

    1.2K40

    【javaSE】认识异常

    而运行时指的是程序已经编译通过得到class 文件了, 再由 JVM 执行过程中出现的错误 异常的处理 防御式编程 我们在每个可能出现异常的地方做好准备,一旦出现异常,立即处理异常。...语法格式: try{ // 将可能出现异常的代码放在这里 }catch(要捕获的异常类型 e){ // 如果try中的代码抛出异常了,此处catch捕获时异常类型与try中抛出的异常类型一致时,或者是...{ // 此处代码一定会被执行到 }] // 后序代码 // 当异常被捕获到时,异常就被处理了,这里的后序代码一定会执行 // 如果捕获了,由于捕获时类型不对,那就没有捕获到,这里的代码就不会被执行...在我们当前的代码中采取的是经过简化的第二种方式. 我们记录的错误日志是出现异常的方法调用信息, 能很快速的让我们找到出现异常的位置. 以后在实际工作中我们会采取更完备的方式来记录异常信息....如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.

    15010

    【Java】异常处理指南

    InstantiationException 当试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。...如果真正要对异常进行处理,就需要 try-catch 语法格式: try{ // 将可能出现异常的代码放在这里 }catch(要捕获的异常类型 e){ // 如果try中的代码抛出异常了,此处...,由于捕获时类型不对,那就没有捕获到,这里的代码就不会被执行 注意: []中表示可选项,可以添加,也可以不用添加 try中的代码可能会抛出异常,也可能不会 举个例子: private static...但是如果 finally 中也存在 return 语句, 那么就会执行 finally 中的 return, 从而不会执行到 try 中原有的 return 一般我们不建议在 finally 中写 return...如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.

    52810

    《面试季》经典面试题-异常篇(一)

    运行时异常: 这类异常编译器是无法检测的,一般是有程序的逻辑错误引起的,在程序中可以通过异常捕获机制来进行处理,处理这类异常主要看开发者是否考虑全面,开发经验是否丰富可以提前预测代码可能出现异常,常见的有...,可能出现异常的代码块使用try...catch异常捕获机制进行处理,而不应该对一大段代码进行try...catch,这不仅是不负责任的表现,同时出现异常时也很难定位到问题。   ...3、捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。   ...NoClassDefFoundError是这一种Error类型错误,它是由JVM异常而引起的,无法通过程序去处理的,所以这个错误我们不应该通过异常处理机制去处理。...会的,finally中的代码会在catch结构return之前被执行,但是不推荐在catch中做return操作。 小结    不积跬步,无以至千里;不积小流,无以成江海。

    52210

    async void 导致程序崩溃

    直到这天看到了这篇博客:在 ASP.NET Core 中誤用 async void 竟引發了 502(Bad Gateway),说async void里出现异常时会导致程序崩溃。...async-void-方法的异常无法被捕获 async void方法抛出的异常无法被捕获,异常会被一直往上面抛,最终在AppDomain层级被捕获,然后程序就挂了。...; } 注意 前面所说的是 async void方法抛出的无法预知到的异常。在async void方法内部,我们仍然能够使用try catch,逻辑是正常逻辑。...; }); } 代码里的async void没问题(不抛异常),其实也符合逻辑。因为async void里面没有异常,自然就不会导致程序崩溃。...但是由于我们不能保证所有代码都没有异常,所以不要使用async void! 不崩溃 只要不是async void,就算请求处理程序抛出了异常,也不会影响到主线程的。

    1.3K20

    谈谈ETL中的数据质量

    数据质量监控背景 当我们把数据导入数据仓库时,ETL中的每个步骤中都可能会遇到数据质量错误。比如与源系统的连接错误,抽取数据可能会失败。由于记录类型冲突,数据转换可能会失败。...即使的ETL任务成功,提取的记录中也会出现异常值,导致后续过程报错。 那么如何主动捕获这些错误,并确保数据仓库中的数据质量?...3、每天新增的记录数波动范围 某一天你发现数据量出现大幅增长或下降,而规则1和2都已校验通过。这种波动可能是正常的,比如电商行业某天的大促活动,或者社交软件的营销活动。...当然,你可也可以直接和前一天的数据对比,增量不超过前一天的1倍。 ?...但是由于采集数据设备异常(业务系统异常),我们会碰到“未来时间”的数据,那如果我们以时间作为分区,后期可能就会出现异常的分析结果。当然,如果你的公司业务是跨国的,你需要考虑时差因素。 ?

    1.6K40

    认识异常(2)

    该结论其实能解释为什么编译时异常如果不处理该异常程序运行都运行不了,而运行时异常不处理程序依然能运行。...所以存在运行时异常的程序一定能运行 而编译时异常系统并不会自动帮你用throws声明,所以当你不处理该异常时它既没有被try catch捕获又没有被传递到JVM,自然程序运行都运行不了。...语法格式: try{ // 将可能出现异常的代码放在这里 }catch(要捕获的异常类型 e){ // 如果try中的代码抛出异常了,此处catch捕获时异常类型与try中抛出的异常类型一致时...同理如上 }finally{ // 此处代码一定会被执行到 } // 后序代码 // 当异常被捕获到时,异常就被处理了,这里的后序代码一定会执行 // 如果捕获了,由于捕获时类型不对,...❤️❤️【异常处理流程总结】: 1.程序先执行 try 中的代码 2.如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配. 3.如果找到匹配的异常类型

    40710

    java(3)-深入理解java异常处理机制

    Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。...由于检查运行时异常的代价远大于捕捉异常所带来的益处,运行时异常不可查。Java编译器允许忽略运行时异常,一个方法可以既不捕捉,也不声明抛出运行时异常。 例3 不捕捉、也不声明抛出运行时异常。...捕获到异常,catch语句块里没有处理此异常的情况:当try语句块里的某条语句出现异常时,而没有处理此异常的catch语句块时,此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally...,找到与之对应的处理程序,其他的catch语句块将不会被执行,而try语句块中,出现异常之后的语句也不会被执行,catch语句块执行完后,执行finally语句块里的语句,最后执行finally语句块后的语句...newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常 5.自定义异常 使用Java内置的异常类可以描述在编程时出现的大部分异常情况。

    69050

    异常(全)

    处理,直接交给JVM来处理 (4)如果抛出的是编译时异常,⽤户必须处理,否则无法通过编译 (5)异常⼀旦抛出,其后的代码就不会执行 3 异常的声明--throws throws 关键字用于在⽅法声明中列出该方法可能抛出的异常...语法格式: try{ // 将可能出现异常的代码放在这⾥ }catch(要捕获的异常类型e){ // 如果try中的代码抛出异常了,此处catch捕获时异常类型与try中抛出的异常类型...⾏处理 }finally{ // 此处代码⼀定会被执⾏到 }] // 后序代码 // 当异常被捕获到时,异常就被处理了,这⾥的后序代码⼀定会执⾏ // 如果捕获了,由于捕获时类型不对,那就没有捕获到...#注: (1)try块内抛出异常位置之后的代码将不会被执行 (2)如果抛出异常类型与catch时异常类型不匹配,即异常不会被成功捕获,也就不会被处理,继续往外抛,直到JVM收到后中断程序----异常是按照类型来捕获的...,即多个异常,⼀次捕获(不推荐)(不演示,知道有就行) 5 finally 在写程序时,有些特定的代码,不论程序是否发⽣异常,都需要执⾏,比如程序中打开的资源:网络连接、数据库连接、IO流等,在程序正常或者异常退出时

    20310
    领券