一、异常

1.什么叫异常

遇到错误一般是exit或者return,但大型程序不允许关闭或退出,所以就需要一套很好的容错机制

容错包含:异常处理,标准错误码,错误日志log

2.异常的处理流程:

try(检查)->throw(抛出异常)catch->(捕获异常)

try:尝试检查代码块中是否有特定异常,如果有则丢给catch处理

throw: 当发现异常的时候,手动抛出一个异常

catch:捕获异常,也是当try发现异常后,catch处理

总结:当try遇到捕获到异常后try后的代码不会继续执行,直接跳转到catch中

当函数中丢异常throw后,则throw后面的不会执行

catch执行完成后,继续执行catch括号外的代码;

cathch中用三个点,表示可以捕获所有的异常 catch(...){ }

3.抛出不同类型的异常

格式: throw 类型;

注意:当抛出的类型有const修饰的时候,捕获也需要const修饰,严格类型匹配

4.捕获异常

catch(类型 变量){}  特定异常:只可以捕获到指定类型的异常

catch(...){}         所有异常:当catch中是三个点时,表明可以捕获所有异常

如果没有捕获所有异常,或者没有捕获throw对应的异常类型,则内核处理异常

注意:

同一种类型只可以一种catch捕获,通过catch的参数区别相同类型的不同异常

捕获异常的Catch是从第一个开始匹配,catch和throw的类型不同则匹配第二个;

catch(...)必须放所有catch最后,用来处理没有捕获的异常。一般情况下都会有

5.异常嵌套

在异常的try和catch中继续嵌入一个try和catch()

try
{throw 12;try{}catch(...){}
}catch()
{
}

6.函数异常申明

在函数声明时,确定抛出的异常类型,增加代码可读性,增加捕获的确定性。

格式: 返回值 函数名(参数列表)throw(类型1,类型2){ }

解析:以上代码中,函数中只可以throw类型1和类型2,不允许丢其他类型

注意:

如果函数异常申明的时候是throw(int)则函数中只可以丢int类型的异常

如果函数异常申明的时候是throw(int)丢double异常,则捕获不到。内核处理

如果函数异常申明的时候是throw(),表明此函数不可以丢异常。不可以有throw

7.丢对象类型异常:

前奏:在丢异常过程中,可以直接对对象类型。Catch也可以捕获对象类型

int fun() throw(int,student)//student为student类
{struct student stu;if(stu.id<0){throw stu.id;}if(stu.id>0){throw stu;}
}int main()
{try{fun();}catch(int error){}catch(student error){}catch(...){}return 0;
}

8.标准异常派生类:(自定义的异常类)

定义:写一个类,继承exception类

格式:class student: public excepion{}

异常,什么叫异常,如何处理?相关推荐

  1. Java异常详解及如何处理

    来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...

  2. python异常数据处理_python中如何处理异常值

    打开pycharm开发工具,在运行窗口输入命令:import pandas as pd #导入pandas库 输入数据集.data=pd.DataFrame({'name':['A','B','C', ...

  3. 如何处理Java异常及常见异常

    六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter ...

  4. java 异常 规范_java 异常规范

    异常规范 异常介绍 Throwable 所有Exception和Error的父类. Error 致命错误. 项目自身存在问题, 诸如格式有问题, 编译版本不对, 堆栈溢出等, 项目在出现ERROR的情 ...

  5. java 异常总结_Java异常的十大问题总结

    本文总结了有关Java异常的十大常见问题. 1.已检查与未检查 简而言之,必须在方法中显式捕获已检查的异常或在方法的throws子句中声明该异常.未检查的异常是由无法解决的问题引起的,例如被零除,空指 ...

  6. 为什么要使用异常及java异常的使用--及js、php、golang的异常机制

    为什么要使用异常 使用场景引入 假设我们在用户操作前,要判断用户登录是否过期以及是否被禁言.那么,自然而然需要写一个判断登录是否成功,以及如果没有登录引导用户去登录的函数.然而,普通的函数的retur ...

  7. 运行时异常与一般异常有何异同

    Throwable 是所有 Java 程序中错误处理的父类 ,有两种资类: Error 和 Exception . Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的 ...

  8. Checked异常和Runtime异常

    Checked异常和Runtime异常 - 爱你一万年123 - 博客园 一 Checked异常和Runtime异常介绍 Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常 ...

  9. 22.Java之异常处理(异常介绍,异常体系图一览,运行时异常,编译异常,try-catch方式处理异常,throws异常处理,自定义异常,throws 和 throw 的区别)

    22.1.异常介绍 Java语言中,将程序执行中发生的不正常情况称为 "异常" (开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件分为两大类: Error:Ja ...

  10. 运行时异常和编译异常

    1.概念: Java中将程序执行中发生的不正常情况称为异常(Exception) 2.分类 Error(错误):JVM无法解决的严重问题,程序会崩溃,比如JVM系统内部错误.资源耗尽等 Excepti ...

最新文章

  1. crossdomain.xml用法
  2. ubuntu20分区_「图」Canonical希望Ubuntu 20.04 LTS Server Installer更快更舒适
  3. PyQt编程之如何在屏幕中央显示窗体
  4. 直播 | DSTC 8“基于Schema的对话状态追踪”竞赛冠军方案解读
  5. Asp.net MVC 学习之路-003(增删改查,后端手工,前端生成)
  6. LeetCode——排序
  7. how is CRM One Order date range finally converted to OPEN SQL
  8. ASP.NET Core 1.1 简介
  9. Redis基础数据结构内部实现简单介绍
  10. background-image使用svg如何改变颜色
  11. Docker安装aria2+ariang
  12. HTML表格表单制作
  13. python 头条新闻机器人_使用今日头条web版API实现的头条机器人
  14. Java 程序员月薪3.8万,需要技术达到什么水平?
  15. Vue----登录主页动态背景短视频制作
  16. 红黑树 之 原理和算法详细介绍
  17. Linux:使用 redis 连接指定端口的 redis 数据库
  18. go 字符串分割数组
  19. jq轮播图——无缝轮播
  20. 自己来造钢筋字符-增加系统字体

热门文章

  1. java遍历是什么意思_Java遍历集合方法分析(实现原理、算法性能、适用场合)...
  2. 《致盛夏的七封情书》 ------------ 第五篇《奥德修斯》
  3. TP6框架--EasyAdmin总结:暂时的离别和新的开始
  4. 苹果x微信语音十秒就断_通过微信汇报工作,你需要掌握这4点,让领导更加看重你...
  5. ubuntu中是可以看迅雷看看
  6. 数据库实验第一章 1.1.5自我实践
  7. 【Unity资源】(贴图和材质)
  8. 二次元“爱豆”走上前台,虚拟主播商业化依然依赖“口红效应”
  9. TCP/IP是什么,什么是TCP,什么是IP,和HTTP有什么区别
  10. Windows重装win8,Mac安装win7双系统