try catch里面try catch嵌套

2023-05-16

try catch里能否内嵌try catch?答案是肯定的。但是等内层try catch出异常之后是个什么执行顺序呢?看下面代码

 static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("----------------------外层try------------------------------");
                errorMethod();               
            }
            catch (Exception ex)
            {
                Console.WriteLine("----------------------外层catch" + ex.Message + "------------------------------");
            }
            finally {
                Console.WriteLine("----------------------外层finally------------------------------");
            }

            Console.ReadKey();


        }

        private static void errorMethod()
        {           
            try
            {
                Console.WriteLine("----------------------内层try------------------------------");
                int i = 0;
                int a = 100/i;
            }
            catch (Exception ex)
            {
                Console.WriteLine("----------------------内层catch" + ex.Message + "------------------------------");
            }
            finally {
                Console.WriteLine("----------------------内层finally------------------------------");
            }
        }

在这里插入图片描述

内层catch处理了异常,所以没有执行外层catch。

咱们把内层的catch注释掉 再试下

 static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("----------------------外层try------------------------------");
                errorMethod();               
            }
            catch (Exception ex)
            {
                Console.WriteLine("----------------------外层catch" + ex.Message + "------------------------------");
            }
            finally {
                Console.WriteLine("----------------------外层finally------------------------------");
            }

            Console.ReadKey();


        }

        private static void errorMethod()
        {           
            try
            {
                Console.WriteLine("----------------------内层try------------------------------");
                int i = 0;
                int a = 100/i;
            }
            //catch (Exception ex)
            //{
            //    Console.WriteLine("----------------------内层catch" + ex.Message + "------------------------------");
            //}
            finally {
                Console.WriteLine("----------------------内层finally------------------------------");
            }
        }

在这里插入图片描述

很明显,外层catch捕获了异常。

总结:try catch嵌套,内层不能捕获时,会考虑外层内否捕获,内层能捕获,则外层catch不执行。

     try
        {
            //A  
            try
            {
                //B 
            }
            catch
            {
                //C  
            }
            finally
            {
                //D  
            }
            //E  
        }
        catch
        {
            //F
        }
        finally
        {
            //G
        }

上面的代码 执行顺序

抛出异常在:内层A,E处由外层catch块捕获,并执行外层finally
抛出异常在:内层B处,且有一合适内层catch捕获,执行内层finally,后执行E处
抛出异常在:内层B处,但内层catch块没有合适处理程序,执行内层finally,搜索外层catch,找合适的,执行外层finally,此时不会执行E
抛出异常在:内层C处,退出内层catch块,执行内层finally,搜索外层catch,找到合适,执行外层finally
抛出异常在:内层D处,退出内层finally块,搜索外层catch,找到合适,执行外层finally

A抛异常 A=》F=》G

B抛异常 C能捕获 B=》C=》D=》E=》F=》G (若C处无法捕获B=》F=》G)

C抛异常 C=》D=》F=》G

D抛异常 D=》F=》G

E抛异常 A=》F=》G 同A

另外 try{}catch{} 中未做捕获类型限定,可捕获所以异常。如 try{}catch(IOException ex){} 则catch只能捕获I/O操作引发的异常。

转载于:https://www.cnblogs.com/zhangchengye/p/5674240.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

try catch里面try catch嵌套 的相关文章

  • try-catch 报错

    try catch的意义 xff1a 1 报错处理 xff0c 输出日志 2 不影响代码块之外的代码执行 xff0c 即发生发生错误后之后的代码仍然后继续执行 try catch代码块与 throws Exception方法块区别 1 tr
  • scp 报错: Permission denied, please try again(publickey,password)

    修改密码后导致报错 Permission denied please try again publickey password 修改 etc ssh sshd config 中 PermitRootLogin yes 修改为yes 重启服务
  • Java面向对象之异常处理机制(try-catch-finally、throws、自定义异常)

    文章目录 一 异常与异常分类二 异常处理机制1 try catch处理2 try catch finally处理3 throws可能抛异常 xff08 少用 xff09 4 throw抛出异常 xff08 少用 xff09 三 自定义异常
  • try using the full name including the namespace, or rename one of the entries

    Error querying database Cause java lang IllegalArgumentException BaseResultMap is ambiguous in Result Maps collection tr
  • C++之 try语句块和异常处理

    一 异常 异常是指存在于代码运行时的反常行为 xff0c 这些反常行为超出了函数正常执行功能的范围 xff0c 异常处理机制包括两部分的协同支持 xff1a 异常检测和异常处理 二 C 43 43 中的异常处理 在c 43 43 语言中 x
  • try chatgpt api (by quqi99)

    作者 xff1a 张华 发表于 xff1a 2023 03 23 版权声明 xff1a 可以任意转载 xff0c 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 chatgpt web 试了网上的一个chatgpt web
  • 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁

    对于今天的 RDBMS 体系结构而言 xff0c 死锁难以避免 在高容量的 OLTP 环境中更是极为普遍 正是由于 NET 的公共语言运行库 CLR 的出现 xff0c SQL Server 2005 才得以为开发人员提供一种新的错误处理方
  • nlohmann::json try...catch异常:[json.exception.type_error.302] type must be string, but is null

    这个问题是http请求body某个字段xxx参数不对 xff08 或者缺少xxx字段 xff09 xff0c 然后下面程序用req xxx 去取值的时候没有取到 xff08 为null xff0c 如果取到应该是string类型的 xff0
  • try{}catch(res){}、throw(exception)、new Error()

    1 try catch res try 中的代码出现错误异常时 xff0c 系统会将异常信息封装到error对象中 xff0c 传递给catch res xff0c 包含res message res name等 EvalError eva
  • try catch里面try catch嵌套

    try catch里能否内嵌try catch xff1f 答案是肯定的 但是等内层try catch出异常之后是个什么执行顺序呢 xff1f 看下面代码 static void Main string args try Console W
  • linux/mm/memory.c/try_to_share()

    try to share checks the page at address 34 address 34 in the task 34 p 34 to see if it exists and if it is clean If so s
  • how to solveE:Unmet dependencies.Try‘apt --fix ^^^^^

    span class token function sudo span span class token function apt span span class token function install span span class
  • 远程登录阿里云服务器时,提示Permission denied, please try again.

    在使用ssh命令 xff0c 远程登录阿里云服务器时 xff0c 提示Permission denied please try again 百分之九十的可能 xff1a 你的密码错了 xff01 你需要注意的是 xff0c 我们的实例有两个
  • 错误:try using -rpath or -rpath-link

    在使用到动态库的时候 xff0c 出现错误如下 xff1a arm linux bin span class hljs keyword ld span warning libssl span class hljs preprocessor
  • Install ncurses (ncurses-devel) and try again.

    主要就是终端图形配置时最容易出现的问题 xff0c 比如最常见的make menuconfig xff0c 解决方法 xff1a sudo apt get install ncurses devel 屏幕弹出 xff1a 找不到这个软件 x
  • C++ -- 异常:try、throw、catch

    异常 申请内存的时候 xff0c 内存不够用 空间配置器申请失败 xff0c 不做处理 拷贝时内存错误 除数分母不能为0 等情况 会抛出异常 try throw catch 1 使用示例 1 xff09 除数为零 xff0c 情况 未处理情
  • try catch里面try catch嵌套

    try catch里面try catch嵌套 点击打开链接 try 与catch的作用 首先要清楚 xff0c 如果没有try的话 xff0c 出现异常会导致程序崩溃 而try则可以保证程序的正常运行下去 xff0c 比如说 xff1a t
  • throw 和 try catch 的区别

    try catch是直接处理 xff0c 处理完成之后程序继续往下执行 xff0c throw则是将异常抛给它的上一级处理 xff0c 程序便不往下执行了
  • OpenMP task 原理与实例

    个人理解 Openmp自从3 0以后全面走向任务驱动 task机制非常重要 可以显式定义任务 而其余parallel代码块中不用task定义的实际上是隐式任务 抽象来说就是有两个池子 线程池与任务池 闲置的线程会在线程池等待任务 显式任务与
  • Promise的Catch报错总结

    在使用Promise时 异步返回的结果可能会两种 一种是使用resolve返回 另一种是使用reject返回 当使用reject返回时 会throw一个Error出来 这时的这个Error需要Catch住 在Promise中Catch一个E

随机推荐

  • 软件设计师-知识产权和标准化知识

    1 1 1 1 标准化的基本知识 什么是标准 xff1f 为在一定的范围内获得最佳秩序 xff0c 对活动或其结果规定共同的和重复使用的规则 导则 或特性的文件 xff0c 称为标准 该文件经协商一致制定并经一个公认机构的批准 标准应以科学
  • MAPREDUCE详解

    1 MAPREDUCE原理篇 xff08 1 xff09 Mapreduce是一个分布式运算程序的编程框架 xff0c 是用户开发 基于hadoop的数据分析应用 的核心框架 xff1b Mapreduce核心功能是将用户编写的业务逻辑代码
  • VNC如何连接远程服务器

    所有VPS均同时支持MSTSC VNC和手机远程控制 xff0c 本篇为VNC Viewer连接教程 1 运行已安装好的VNC Viewer xff0c 输入连接地址 xff08 如果没特别指定 xff0c 那么连接地址一般是VPS地址的端
  • 为什么硬盘只能最多有四个主分区

    主分区 xff0c 也称为主磁盘分区 xff0c 和扩展分区 逻辑分区一样 xff0c 是一种分区类型 主分区中不能再划分其他类型的分区 xff0c 因此每个主分区都相当于一个逻辑磁盘 xff08 在这一点上主分区和逻辑分区很相似 xff0
  • 查看ubuntu版本号

    转自 xff1a http www cnblogs com zero1665 archive 2010 05 24 1742962 html 方法一 xff1a cat etc issue 返回结果 xff1a Ubuntu 6 06 2
  • Android SDK聚合原理讲解(参考U8)

    想要实现一套聚合sdk框架 xff0c 我们来思考一下 xff0c 我们接入一个sdk xff0c 需要实现哪些东西 1 首先 xff0c 客户端需要接入多款SDK xff0c 为了能够多款游戏重用 xff0c 我们不可以在游戏里面直接去接
  • 高德地图POI数据2020年高德POI

    高德地图POI是Point of Interest 的缩写 xff0c 可以翻译成兴趣点 xff0c 一共有三级分类 xff08 大类 中类 小类 xff09 xff0c 其中一级分类有23个 涵盖餐饮服务 购物服务 生活服务 体育休闲服务
  • C++笔试题整理

    目录 1 笔试题1 1 1 链表反转 1 2 String 2 笔试题2 2 1 求下面函数的返回值 xff08 微软 xff09 2 2 什么是 引用 xff1f 申明和使用 引用 要注意哪些问题 xff1f 2 3 将 引用 作为函数参
  • C/C++程序实现通过http代理访问网页内容

    公司通过代理上网 xff0c C程序直接通过发http请求不能获取网页内容 xff0c 故实现了下通过代理访问http网页的一个测试程序 程序很简单 xff0c 有几个重点 先通过socket直接连接代理服务器 向代理服务器发送HTTP的C
  • Ubuntu搭建Apache+Svn+Submin环境

    1 环境搭建部分参考网站 xff1a 搭建Apache 43 Svn 43 Submin环境 2 使用submin最新版2 3 3 不通过邮件方式 xff0c 直接修改admin密码 xff1a vim passwd py 输入脚本如下 s
  • 磁力计如何用来计算姿态(2)

    上一篇 磁力计如何用来计算姿态 xff08 1 xff09 介绍了磁强计算姿态角的原理 本篇介绍 xff0c 在无人飞行器上 常用的 加速度计 43 磁强计 的定姿方法 静止状态 抑或 悬停状态 xff1a 利用加速度 计算横滚角 xff0
  • readdir_r()

    概述 xff1a 1 readdir r函数 xff0c 是readdir函数的可重入版本 xff0c 也就是线程安全的 2 readdir函数使用静态数据 xff0c 因而不可重入 xff0c 即不是线程安全的 readdir r 就是采
  • CSDN>>2011年重大IT安全事件回顾

    在2010年新年前夜 xff0c 由于无人知道密码 xff0c 旧金山无法获取其紧急行动中心上运行的备份系统 xff0c 这或许可以被视为一个不祥的预兆 2011年即将过去 xff0c 我们需要回顾并盘点一下这一年中发生的重大IT安全事件
  • FRP入门篇

    目录 一 前言 1 概述 2 原理 3 支持功能 4 适用场景 二 环境准备 三 使用 1 安装包下载 2 服务端部署 2 1 上传安装包 2 3 启动服务端 3 客户端部署 3 1 代理服务准备 3 2 上传安装包 3 3 客户端配置 3
  • Python 笔记(14)— 类对象及属性内置方法 classmethod、delattr、dir、hasattr、getattr、callable

    1 classmethod Python 使用关键字 class 定制自己的类 xff0c self 表示类实例对象本身 classmethod 修饰符对应的函数不需要实例化 xff0c 不需要 self 参数 第一个参数需要是表示自身类的
  • Depends, python2.7-minimal (= 2.7.15_rc1-1) 问题解决方法使用 aptitude 安装以及与 apt-get 的区别

    1 问题现象 使用命令 sudo apt install python2 7 安装 Python2 时报如下错误 wohu 64 ubuntu1804 etc apt span class token function sudo span
  • Ubuntu 安装 Docker - Dependency failed for Docker Application Container

    Docker 安装 由于 apt 官方库里的 Docker 版本可能比较旧 xff0c 所以先卸载可能存在的旧版本 xff1a span class token function sudo span span class token fun
  • Docker 入门系列(2)- Docker 镜像、获取查看、修改镜像标签、查找删除创建镜像、导入导出镜像

    Docker 运行容器前需要本地存在对应的镜像 xff0c 如果镜像没保存在本地 xff0c Docker 会尝试先从默认镜像仓库下载 https hub docker com xff0c 用户也可以通过配置 xff0c 使用自定义的镜像仓
  • FreeRTOS事件组之事件组等待位(xEventGroupWaitBits)

    1 函数说明 xff08 xEventGroupWaitBits xff09 函数原型 xff1a EventBits t xEventGroupWaitBits const EventGroupHandle t xEventGroup c
  • try catch里面try catch嵌套

    try catch里能否内嵌try catch xff1f 答案是肯定的 但是等内层try catch出异常之后是个什么执行顺序呢 xff1f 看下面代码 static void Main string args try Console W