目录
注意
异常的声明不能从根本上解决问题
声明一个编译时异常类型之后,系统不会在编译期间检查这段代码,但是在运行阶段,如果传入的数据不正确,也有可能出现错误情况
异常的声明只能处理编译时异常
step1-->如果在代码中某个方法内出现了错误情况,系统就会把这个错误发生的原因,发生异常的类型,发生的路径封装到异常对象中
step2-->如果当前方法中没有处理这个异常对象,就将异常往上抛,抛给调用该方法的方法
step3-->如果调用方法也没有处理异常,那么久一层层往上抛出,直到抛给main方法再抛给虚拟机
step4-->虚拟机将当前异常对象通过标准错误流,打印到控制台,并结束自己
try...catch
try{ 可能出现错误的代码 }catch(异常类型 异常对象名){ 处理异常的方式 }
step1-->先执行try中的代码,检测是否出现异常
step2-->如果try中的代码没有出现问题,try...catch直接结束,代码正常执行try...catch后面的代码
step3-->如果try中出现了异常,程序立即跳转到catch中查看出现异常所属类型和catch中声明的类型是否一样,如果一样,就捕获该异常按照指定的方式去处理异常,处理之后try...catch结束,程序继续运行
step4-->如果try中出现了catch中没有声明的异常类型,就不能捕获该异常,此时虚拟机来处理这个异常(默认处理方式)
注意事项
如果在某行代码中,出现了异常,立即去catch块中匹配异常类型,出现错误的代码后面的代码就不能执行了
try...catch...catch...
try{ 可能出现错误的代码 }catch(异常类型1 对象名1){ 异常1的处理方式 }catch(异常类型2 对象名2){ 异常2的处理方式 }...
step1-->先执行try中的代码,检测是否出现异常
step2-->如果出现了异常,就先和异常类型1匹配,如果能匹配上就执行异常1的处理方式,处理之后,直接结束整个try...catch语句,执行之外的代码
step3-->如果不能和异常类型1匹配,就继续和异常类型2匹配,如果能匹配上,就执行异常类型2的处理方式,之后结束整个try...catch语句,执行之外的代码
step4-->如果异常类型2不能匹配,依次类推,往后匹配
step5-->如果出现的异常,catch中的类型都不能匹配,虚拟机默认处理
注意事项
如果给定了多个catch语句去匹配多个异常类型,异常类型中存在子父类的关系,腹肌的异常类型不能1定义在子级异常类型前面
原因
如果父类异常定义在前面,后面定义的子类或者简介子类异常没有执行的机会,可以将父类异常类型定义在后面,如果前面的类型无法匹配,可以使用父类异常匹配
如果多个异常类型想要执行一种处理方式,可以使用 | 符号去定义类型(jdk1.7),可以使用多个 | 来定义多个异常类型,只要出现一种,都可以去捕获处理
try...catch...finally
try{ 可能会发生错误的代码 }catch(异常类型 异常对象名){ 异常的处理方式 }finally{ 一定要执行的代码 }
step1-->先执行try中的代码,检测是否出现异常
step2-->如果出现异常就先和异常类型匹配,如果能匹配上就执行异常的处理方式,处理之后结束整个try...catch语句,执行之外的代码
step3-->如果不能和异常类型,不结束整个try...catch,强制执行finally代码块中的代码,然后再结束
使用原因
有些代码一定要执行,将代码放在try中或者catch中或者terycatch外都有可能执行不到
将这段代码放在finally块中,不管遇到什么情况,系统都会去执行finally中的代码
try...finally
step1-->执行第一段代码
step-->执行第二段代码
作用
如果在程序中,有多段代码,多段代码都需要有执行的机会,name可以将这多段代码,分别放在try中和finally中,这样,多段代码之间就会互不影响,都有执行的机会,finally用来分隔代码,让代码之间互不影响,都有执行的机会
如果代码的某个位置出现了错误情况,可以使用特定的格式,捕获这个错误,捕获之后可以按照自己定义的方式去处理异常
注意
异常的捕获即可以处理编译时异常,也可以处理运行时异常
可以从根本上解决问题
文章浏览阅读1.3w次,点赞5次,收藏57次。功能介绍:输入起点、终点、时间就能得到携程上的航班信息代码:from prettytable import PrettyTableimport requestsimport jsondef xiecheng(dcity,acity,date): date = date[0:4]+'-'+date[4:6]+'-'+date[6:8] headers = { "User-A..._爬虫 携程 机票
文章浏览阅读1.1k次。QT不同线程间signal-slot机制的值传递signal-slot机制是QT核心,也是QT解决线程之间通信的一大亮点。深刻理解其两大特性:(1)loosely coupledsender与receiver互不关心,一个signal可以被多个slot获取,signal可以触发另一个signal。(2)type-safeconnect连接时,遵守严格的参数约定,slot参数必须..._qt connect 两个线程,signal 带两个int参数,slots函数带两个int参数
文章浏览阅读3w次,点赞18次,收藏64次。AutoTokenizer是又一层的封装,避免了自己写attention_mask以及token_type_idsimport transformersimport configorigin_tokenizer = transformers.BertTokenizer.from_pretrained(config.pretrained_model_path)auto_tokenizer = transformers.AutoTokenizer.from_pretrained(config.pret_autotokenizer
文章浏览阅读2.9k次,点赞2次,收藏15次。在使用抽样之前,之前学的内容忘得差不多了。所以在使用本次例子之前,对获取该数据作下了解。hyper<-read.csv("http://archive.ics.uci.edu/ml/machine-learning-databases/thyroid-disease/hypothyroid.data",header=F)names<-read.csv("http://archive._r语言smote算法代码
文章浏览阅读2.3k次。一 背景 基于ELK日志的报警时互联网公司标配,大一点公司都会自研组件,报警信息更加准确、规则多样化。(之前的五八到家就是自研的)我们采用了Elastalert报警。官网的地址:https://github.com/Yelp/elastalertElastalert自带的报警方式虽然多种多样,如下所示,但是不能实现根据报警信息分组发送。而且,不太符合国情:我们需要的是:邮件+短..._0 alerts sent
文章浏览阅读598次。MACROBUTTON MTEditEquationSection2 SEQ MTEqn \r \h \* MERGEFORMAT SEQ MTSec \r 1 \h \* MERGEFORMAT SEQ MTChap \r 1 \h \* MERGEFORMAT 毕业设计 课程设计 毕业论文 详细资料 联系QQ号;1620812008本科毕业设计(论文)基于MATLAB的IIR滤波..._matlab设计iir滤波器为高通滤波器,截至频率为0.5π
文章浏览阅读1.1w次,点赞3次,收藏10次。_dp规格
文章浏览阅读2.5k次。首先对current_thread_info不熟悉的同学可以先百度一下这是个什么东西?我们这里仅仅简单的提一下,current_thread_info用于获取当前进程的信息。ARM32平台相关定义#define THREAD_SIZE_ORDER 1#define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)union thr..._arm64 thread_info
文章浏览阅读121次。前言随着计算机硬件的不断发展,CPU进入多核时代,并发运算因此也上升到了并行运算的高度,作为Java程序员,如何最大化地“压榨”CPU的资源,利用CPU超高的计算速度编写高效快速运行的程序,如何解决CPU与RAM之间速度不匹配的问题呢?今天分享一份《Java高并发编程详解多线程与架构设计》就会帮你解决这些问题,本书结合作者的实践经验,不仅介绍了高速缓存Cache、Cache Line、Java内存模型,以及现代CPU基本架构等相关知识,还深入讲解了Java跨平台的高并发解决方案。本书实._阿里线程框架
文章浏览阅读1.8k次。我们网站使用的服务器环境一般有IIS、Apache、Tomcat、Nginx 等,他们各有优劣。一般虚拟空间使用IIS 和 Apache居多,这两个的配置都比较简单,IIS一般都安装了ISAPI_Rewrite 模块,可以直接使用和Apache一样的.htaccess文件来配置,直接将.htaccess文件上传到网站根目录即可。.htaccess 文件代码RewriteEngine OnRewri..._宝塔怎么添加htaccess规则
文章浏览阅读189次。在HbuilderX中打开前端项目,依次点击 运行 =》 运行到小程序模拟器 =》微信开发者工具。必要工具:HbuilderX,微信开发者工具。_博客小程序源码
文章浏览阅读1.1k次。1、组合索引能够避免回表查询:假设有一张订单表(orders),包含order_id和product_id二个字段。一共有31条数据。符合下面语句的数据有5条。执行下面的sql语句:select product_id from orderswhere order_id in (123, 312, 223, 132, 224);这条语句要mysql去根据order_id进行搜索,然后返回_假设有一张名为orders的订单表