首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从函数返回catch块,最终阻塞会发生什么?

从函数返回catch块,最终阻塞会发生以下情况:

  1. 首先,需要明确的是,catch块是用于捕获和处理异常的代码块。当函数执行过程中发生异常时,程序会跳转到catch块中执行相应的异常处理逻辑。
  2. 如果在catch块中没有对异常进行处理或者没有使用特定的语句将异常重新抛出,那么异常将被认为已经被处理,并且程序会继续执行catch块之后的代码。
  3. 如果在catch块中对异常进行了处理,但是没有使用特定的语句将异常重新抛出,那么程序会继续执行catch块之后的代码。
  4. 如果在catch块中对异常进行了处理,并且使用了特定的语句将异常重新抛出,那么异常将被重新抛出到调用该函数的地方,并且会继续在调用栈中寻找相应的异常处理逻辑。
  5. 如果在调用栈中没有找到相应的异常处理逻辑,那么程序将终止,并且会输出相应的错误信息。

总结起来,从函数返回catch块,最终阻塞会导致异常被处理或者重新抛出,如果异常没有被处理或者在调用栈中没有找到相应的异常处理逻辑,程序将终止。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java基础三:Java 核心技术

Throwable 类常用方法 public string getMessage():返回异常发生时的简要描述 public string toString():返回异常发生时的详细信息 public...其后可接零个或多个 catch ,如果没有 catch ,则必须跟一个 finally catch : 用于处理 try 捕获到的异常。...finally : 无论是否捕获或处理异常,finally 里的语句都会被执行。当在 try catch 中遇到 return 语句时,finally 语句将在方法返回之前被执行。...exit 是带参函数 ;若该语句在异常语句之后,finally 执行 程序所在的线程死亡。 关闭 CPU。...BIO,NIO,AIO 有什么区别? BIO (Blocking I/O): 同步阻塞 I/O 模式,数据的读取写入必须阻塞在一个线程内等待其完成。

57720

JS魔法堂:深究JS异步编程模型

到这里我有个疑问,那就是到底什么才叫做异步呢?既然有异步,那必然有同步,那同步又是什么呢?谈起同步和异步,那必不可少地要提起阻塞和非阻塞,那它们又是什么意思呢?...谈到它们那必须联系到IO来说了 阻塞: 就是JS线程发起阻塞IO后,JS线程什么都不做就等则阻塞IO响应。...首先当我们发起网络IO请求时,应用程序向OS发起系统调用,然后内核会调用驱动程序操作网卡,然后网卡得到的数据先存放在内核空间中(应用程序是读取不了的),然后将数据内核空间拷贝到用户空间。...操作结果将于不明确的未来返回 Callback Hell说起 举个栗子——番茄炒蛋 番茄切块(代号a) 鸡蛋打成蛋液(代号b) 蛋液煮成半熟(代号c) 将蛋切成块(代号d) 番茄与鸡蛋一起炒熟...状态变化事件的回调函数执行结果影响Promise链中下一个Promise实例的状态。

1.4K60
  • 浅谈.Net异步编程的前世今生----异步函数篇(完结)

    需要注意的是,如果只使用了async标注方法,而方法内部未使用await,导致编译警告,如图所示: 另一个重要的事实是,异步函数必须返回Task或Task类型。...; } } } 这里我们执行完await调用的代码行后,立即返回,而不是阻塞两秒,如果是同步执行则结果相反。...我们还定义了一个后续操作,用于在异步操作完成后,打印出操作结果;另一个后续操作用于有错误发生时,打印异常信息。最终返回一个代表其中一个后续操作任务的任务,并在Main中等待其执行完成。...而在第二个中,我们直接使用await对任务进行操作,获取异步执行的结果,同时使用try-catch代码来捕获可能发生的异常,这和我们编写同步方法的代码风格是一致的,简化了程序编写的复杂度。...造成这种情况的原因是Task.Delay在幕后使用了一个计时器,它的执行过程如下: 1、线程池中获取工作线程,它将等待Task.Delay返回结果; 2、Task.Delay方法启动计时器,并指定一代码

    67720

    【8】进大厂必须掌握的面试题-Java面试-异常和线程

    错误和异常有什么区别? 错误是在运行时发生的不可恢复的情况。如OutOfMemory错误。这些JVM错误无法在运行时修复。尽管可以在catch中捕获错误,但是应用程序的执行将停止并且无法恢复。...什么是finally?有没有什么情况下最终将不会执行? 最终是始终执行一组语句的。它始终与try相关联,无论是否发生任何异常。...是的,如果程序通过调用System.exit()或导致致命错误(导致进程中止)退出,则最终将不会执行。 Q11。什么是同步? 同步是指多线程。同步的代码一次只能由一个线程执行。...如果另一个线程正在执行同步方法,则该线程将被阻塞,直到该线程释放监视器。 Q12。我们可以在单个try下写入多个catch吗?...String getMessage() –此方法返回有关异常的消息String。可以通过其构造函数提供消息。

    67110

    【8】进大厂必须掌握的面试题-Java面试-异常和线程

    错误和异常有什么区别? 错误是在运行时发生的不可恢复的情况。如OutOfMemory错误。这些JVM错误无法在运行时修复。尽管可以在catch中捕获错误,但是应用程序的执行将停止并且无法恢复。...什么是finally?有没有什么情况下最终将不会执行? 最终是始终执行一组语句的。它始终与try相关联,无论是否发生任何异常。...是的,如果程序通过调用System.exit()或导致致命错误(导致进程中止)退出,则最终将不会执行。 Q11。什么是同步? 同步是指多线程。同步的代码一次只能由一个线程执行。...如果另一个线程正在执行同步方法,则该线程将被阻塞,直到该线程释放监视器。 Q12。我们可以在单个try下写入多个catch吗?...String getMessage() –此方法返回有关异常的消息String。可以通过其构造函数提供消息。

    55410

    Java 并发编程之美-线程相关的基础知识

    当 main 函数执行完毕,但是还有用户线程存在的时候,JVM 进程退出? 什么是线程 在讨论什么是线程前有必要先说下什么是进程,因为线程是进程中的一个实体,线程本身是不会独立存在的。...当一个线程调用一个共享对象的 wait() 方法时候,调用线程会被阻塞挂起,直到下面几个事情之一发生返回: 其它线程调用了该共享对象的 notify() 或者 notifyAll() 方法; 其它线程调用了该线程的...最后再举一个例子说明当一个线程调用共享对象的 wait() 方法被阻塞挂起后,如果其它线程中断了该线程,则该线程抛出 InterruptedException 异常后返回: public class...方法多一个超时参数,不同在于如果一个线程调用了共享对象的该方法挂起后,如果没有在指定的 timeout ms 时间内被其它线程调用该共享变量的 notify() 或者 notifyAll() 方法唤醒,那么该函数还是因为超时而返回...另外被唤醒的线程不能马上 wait 返回继续执行,它必须获取了共享对象的监视器后才可以返回,也就是唤醒它的线程释放了共享变量上面的监视器锁后,被唤醒它的线程也不一定会获取到共享对象的监视器,这是因为该线程还需要和其它线程一竞争该锁

    66330

    了解关键区别:await vs return vs return await

    使用异步函数时,我们遇到三个重要的关键字:await 、return、return await。在本文中,我们将探讨这些关键字之间的差异,并讨论何时使用每个关键字。...它允许我们以更加同步和可读的方式编写异步代码,从而更容易处理 Promise 和执行非阻塞操作。当调用异步函数时,它会返回一个 Promise,该 Promise 解析为函数最终结果。...} } 在这里,如果调用 foo,返回的 Promise 总是等待一秒,然后以 undefined 或以 "caught" 表示 fulfill。...Return await 在 try/catch 中,你需要的是 return await。...// 否则,此将继续运行: return fulfillValue; } catch(e) { return 'caught'; } } 注意:在 try/catch 之外,

    31310

    5个asyncawait最佳实践

    这使得函数在继续执行下一行之前暂停并等待 Promise 解决。 为什么 async/await 很重要 异步编程在当今高并发应用程序的世界中是必不可少的。...如果发生错误,它将被 catch 捕获并记录到控制台。 在 async/await 代码中,使用 try/catch 内的 await 是处理错误的简单有效方法。...Async void 函数是使用 async 关键字标记的函数。虽然在某些情况下可以使用异步无返回函数,但通常应避免使用。...通常最好使用 async Task 或 async Task 函数。这些类型的函数允许我们返回值并更轻松地处理错误。...混合使用同步和异步代码可能导致性能问题、死锁和竞争条件。但是,在某些情况下,有必要混合使用同步和异步代码,例如从同步方法调用异步方法或异步方法调用同步方法。

    66510

    金九银十面试准备季:异常+IO与NIO流

    执行,并且finally的执行早于try里面的return 结论: (1)不管有木有出现异常,finally中代码都会执行; (2)当try和catch中有return时,finally仍然执行;...(3)finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在...finally执行前确定的; (4)finally中最好不要包含return,否则程序提前退出,返回值不是try或catch中保存的返回值。...特点 : Java编译器检查它。此类异常,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通过编译。...NIO 的非阻塞模式,使一个线程某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。

    53820

    Java中的多线程你只要看这一篇就够了

    反过来,线程不安全就意味着线程的调度顺序影响最终结果,如不加事务的转账代码: void transferMoney(User from, User to, float amount){ to.setMoney...也包括在synchronized中去调用另一个对象的wait/notify,因为不同对象的监视器不同,同样抛出此异常。...Thread.interrupted()检查当前线程是否发生中断,返回boolean synchronized在获锁的过程中是不能被中断的。 中断是一个状态!...当a线程lock后,b线程阻塞,此时如果是lockInterruptibly,那么在调用b.interrupt()之后,b线程退出阻塞,并放弃对资源的争抢,进入catch。...这里补充一个小知识点,finally是可以信任的:经过测试,哪怕是发生了OutofMemoryError,finally中的语句执行也能够得到保证。

    39210

    JavaScript中的asyncawait

    async 是一个修饰符,async 定义的函数默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数。...当然语法上强制规定await只能出现在asnyc函数中,我们先来看看async函数返回什么: async function testAsy(){ return 'hello world'; }...,它就会立即执行,返回一个Promise对象,非阻塞,与普通的Promise对象函数一致。...为什么立即输出L,这就涉及到了JS中的事件循环了,我写了一篇关于事件循环的博客,看了应该会明白,总的来说,异步函数会在非异步函数之后运行。...现在就还差一点需要说明,那就是怎么处理异常,如果请求发生异常,怎么处理? 它用的是try/catch 来捕获异常,把await 放到 try 中进行执行,如有异常,就使用catch 进行处理。

    1.4K10

    Java面试手册:核心基础-3

    详细的说是在,return执行中,但是还未执行的这个过程执行finally代码,如下代码:主函数调用子函数并得到结果的过程,好比主函数准备一个空罐子,当子函数返回结果时,先把结果放在罐子里(函数栈里...所谓返回,就是子函数说,我不运行了,你主函数继续运行吧,这没什么结果可言,结果是在说这话之前放进罐子里的。...finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,所以,返回的结果是2,return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,...12.Java语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try中可以抛出异常吗?...这是宏观上来看的,cpu一执行a线索,一执行b线索,切换时间很快,给人的感觉是a,b在同时执行,好比大家在同一个办公室上网,只有一条链接到外部网线,其实,这条网线一会为a传数据,一会为b传数据,由于切换时间很短暂

    64830

    秋招面经五(字节、拼多多、美团、网易)

    惰性删除:放任键过期不管,但是每次键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。...14、Redis中有没有什么比较危险的命令 美团 一面(2020-9-6) 1、SQL性能优化 2、手撕代码 二面(2020-9-6) 1、着重问了kafka相关的问题 中国农业银行 一面 1、什么时候触发...2、JVM发生oom之后,发生在哪个层面 主要发生在堆空间中的老年代内存不够的时候。 3、JVM哪些方面避免发生oom,调整哪个参数,代码层面如何调整?...finally(关键字)是在异常处理时,try-catch-finally语句中使用,finally常用来处理一些后续的工作。 在执行过程中,只要存在finally最终都会被执行。...catch中的内容,是在try内容发生catch所声明的异常时,跳转到catch中执行;finally则是无论异常是否发生,都会执行finally的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码

    80130

    Java线程之间的通知与等待,详解!!

    1.wait()方法 当一个线程调用一个共享变量的wait() 方法时,该调用线程会被阻塞挂起,直到发生下面几件事情之一才返回。...线程A获取锁后发现队列已满会调用wait()方法阻塞挂起自己,然后就会释放掉获取到的queue上的锁,防止发生死锁。...这里再举个例子说明当一个线程调用共享对象的wait()方法被阻塞挂起后,如果其他线程中断了该线程,则该线程抛出InterruptedException异常返回。...此外,被唤醒的线程不能马上wait方法返回并继续执行,它必须在获取了共享对象的监视器锁后才可以返回,也就是唤醒它的线程释放了共享变量上的监视器锁后,被唤醒的线程也不一定会获取到共享变量的监视器锁,这是因为该线程还需要和其他线程一起竞争该锁...但是执行结果来看,只有一个线程A被唤醒,线程B依然在阻塞挂起状态。

    1.8K30

    Java网络编程之BIO

    ,如果这个函数不能马上返回,则调用者一直等函数返回才能往下执行其它代码; 而非阻塞则是反过来,如果函数不能马上返回,调用者线程往下执行其它代码,不过需要自己询问前面的调用结果。...打个比方,在餐厅中,服务员A现在在为一位客人C点菜,如果C还没点好菜之前A不能为其他客人点菜就是阻塞的,如果可以则是非阻塞的。 同步和异步 同步:调用者调用某个函数时,必须等待结果才能返回。...异步:调用者调用某个函数,如果函数不是马上返回,调用者可以往下执行,并且函数返回的时候主动通知调用者。...具体的模型大概分为以下几种类型: A、阻塞I/O模型 在用户线程发出请求后,内核检查数据是否就绪,此时用户线程一直阻塞等待数据就绪,数据就绪后,内核将数据复制到用户线程空间中,并将用户线程恢复成可执行的...E、异步I/O模型 在该模型中,用户线程会发起一个请求到内核后,内核立即返回一个状态,来说明此时的请求是否成功发起,在这个过程中用户线程不会发生任何的阻塞; 接着内核等待数据准备完成并将数据复制到用户线程中

    36210

    java线程-看这一篇就够了

    反过来,线程不安全就意味着线程的调度顺序影响最终结果,如不加事务的转账代码: void transferMoney(User from, User to, float amount){ to.setMoney...也包括在synchronized中去调用另一个对象的wait/notify,因为不同对象的监视器不同,同样抛出此异常。...Thread.interrupted()检查当前线程是否发生中断,返回boolean synchronized在获锁的过程中是不能被中断的。 中断是一个状态!...当a线程lock后,b线程阻塞,此时如果是lockInterruptibly,那么在调用b.interrupt()之后,b线程退出阻塞,并放弃对资源的争抢,进入catch。...这里补充一个小知识点,finally是可以信任的:经过测试,哪怕是发生了OutofMemoryError,finally中的语句执行也能够得到保证。

    46230

    线程的通知与等待

    1.wait()方法 当一个线程调用一个共享变量的wait() 方法时,该调用线程会被阻塞挂起,直到发生下面几件事情之一才返回。 ​...线程A获取锁后发现队列已满会调用wait()方法阻塞挂起自己,然后就会释放掉获取到的queue上的锁,防止发生死锁。...这里再举个例子说明当一个线程调用共享对象的wait()方法被阻塞挂起后,如果其他线程中断了该线程,则该线程抛出InterruptedException异常返回。...此外,被唤醒的线程不能马上wait方法返回并继续执行,它必须在获取了共享对象的监视器锁后才可以返回,也就是唤醒它的线程释放了共享变量上的监视器锁后,被唤醒的线程也不一定会获取到共享变量的监视器锁,这是因为该线程还需要和其他线程一起竞争该锁...但是执行结果来看,只有一个线程A被唤醒,线程B依然在阻塞挂起状态。

    1.1K30

    异步JavaScript:回调地狱到异步和等待

    例如,在每个函数中重复错误处理,并且每个嵌套函数调用主回调。 更复杂的异步JavaScript操作(例如通过异步调用进行循环)是一个更大的挑战。事实上,用回调来做这件事并不是一件容易的事情。...声明一个函数async将确保它总是返回一个,Promise所以你不必担心这个问题了。 为什么你async今天要开始使用JavaScript 函数? 由此产生的代码更清洁。...错误处理要简单得多,它依赖于try/ catch就像在其他同步代码中一样。 调试要简单得多。在.then内设置断点不会移动到下一个,.then因为它只能通过同步代码。...它们允许我们编写基于Promise的代码,就好像它是同步的,但不阻塞主线程。 什么是回调地狱? 在JavaScript中,回调地狱是代码中的一种反模式,这是由于异步代码结构不良造成的。...什么是JavaScript promises? JavaScript中的promise就像一个占位符值,预期最终将解决最终成功的结果值或失败的原因。

    3.7K10

    有些线程跑着跑着就不见了

    而又因为上述代码「吃掉」了异常,这就导致我们外部看起来这个工程跑着跑着就不动了,日志什么也没了。....; // 2.设置超时时间 socket.setSoTimeout(60*1000); // 3.读取服务端返回 socket.read(); }); 上面程序中,如果服务端一直没有返回,那么异步线程将会一直被阻塞...举一个极端的例子,假设上面的代码没有设置超时时间,而服务端一直没有返回响应,「此时异步线程就会被一直阻塞」。...由于异步线程内使用try..catch捕获处理了 Exception异常,所以找了半天不知道什么问题。 最后,小黑哥排查 stdout 输出日志,才发现异步线程发生 Error错误。...对于第二、第三种情况,这就需要我们建立一个良好的编程习惯,使用try..catch 捕获所有异常,并且 catch中一定做一些处理,比如说打印相关日志。 好了,今天的文章就到这里,我是楼下小黑哥~

    1.8K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券