Exception、Thorow、Throws、TryCatch
一、异常
概述: 异常指的是不正常,指的是程序中出现了某种问题
java中,所有问题都可以使用一个类来表示,这个类叫做Throwable
Throwable:
Throwawble是java中所有异常和错误的父类
Error: 表示错误,指的是不可挽回的严重问题
Exception: 表示异常,指的是可以挽回的轻微问题,
处理异常两种方式:
1、往外抛(甩锅):throw throws
2、解决问题: try...catch
二、Throw关键字
如果想要手动创建异常,并手动抛出,我们需要throw关键字
格式: throw new 异常类名();
注意: 如果方法内抛出异常,那么这个方法剩下的代码不会执行,程序直接回到调用者
if(index < 0 || index > arr.length - 1) {
String msg = "索引的取值范围必须是0到" + (arr.length - 1) + ", 您给的索引为:" + index;
throw new ArrayIndexOutOfBoundsException(msg);
}
System.out.println("你好");
return arr[index];
//控制台中打印异常结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 索引的取值范围必须是0到1, 您给的索引为:10
上面代码在控制台中打印异常结果,并没有执行输出语句。
三、throws关键字
throws: 进行异常声明,表示方法内部可能会抛出异常
格式: 修饰符 返回值类型 方法名(参数列表) throws 异常类名{
}
注意: 1、如果在一个方法内抛出了编译时异常,那么一定要进行异常的声明
2、如果调用使用了throws声明异常的方法,那么作为调用者要么处理,要么抛出
3、当一个方法内抛出了运行时异常,可以使用throws进行异常声明,也可以不做声明
4、在一个方法内如果可能抛出多个异常,那么可以使用throws声明这些异常,也可以直接声明这些异常的父类
public static void method3() throws Exception{ //方法内抛出了两个异常,可以用Exception声明
int i = 0;
if(i % 2 == 0) {
throw new IOException(); //IO异常
} else {
throw new ClassNotFoundException(); //classNotFound异常
}
}
四、try...catch
如果代码出现异常之后,不希望把这个异常往外抛,可以使用try...catch解决这个问题
格式:
try{
可能会出现异常的代码
}catch(要捕获的异常类名 变量名){
出现异常后执行的代码
}
执行流程:
如果try中代码没有问题,那么执行完try之后,会跳过catch继续往下执行
如果try中的代码有问题,并且catch捕获到了这个异常,那么就会直接进入到catch中执行
如果try中的代码有问题,但是catch没有捕获到这个异常,那么这个异常会依旧往外抛
总结:如果catch到了就进入catch内部解决,如果没有catch到就仍然甩锅
try {
Object obj = null;
obj.toString();
System.out.println("1. try...end");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("2. catch代码...");
}
System.out.println("3. main...end");
//控制台中打印
Exception in thread "main" java.lang.NullPointerException
上方代码try中异常是:NullPointerException的异常
catch中是: ArrayIndexOutOfBoundsException,并没有捕捉到try中异常
所以 : 仍然将NullPointerException抛给JVM在控制台打印
Exception、Thorow、Throws、TryCatch的更多相关文章
- java自定义异常(Exception、throws、try-catch)
一.What is ... 异常处理就是容错处理机制.通过构造一个陷阱来捕获运行时的可预见错误,经对该错误进行适当处理后,让程序能继续运行不至于崩溃. 二.Who will ... 异常由系统环境引发 ...
- java基础16 捕获、抛出以、自定义异常和 finally 块(以及关键字:throw 、throws)
1.异常的体系 /* ------|Throwable:所有异常和错误的超类 ----------|Error(错误):错误一般用于jvm或者硬件引发的问题,所以我们一般不会通过代码去处理错误的 -- ...
- throws、throw和try catch
在学习代理模式的时候,编写动态生成代理类.java文件时,用try{}catch(){}捕获异常发现catch(Exception e)报错,得换成catch(Throwable e),然后又查了查两 ...
- Java检查异常、非检查异常、运行时异常、非运行时异常的区别
Java把所有的非正常情况分为两种:异常(Exception)和错误(Error),它们都继承Throwable父类. Java的异常(Exception和Error)分为检查异常和非检查的异常. 其 ...
- JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播放该文件.项目中用制作的player.swf播放器. 多媒体视频处理工具FFmpe ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
- Spring AOP详解 、 JDK动态代理、CGLib动态代理
AOP是Aspect Oriented Programing的简称,面向切面编程.AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理以及日志记录.AOP将这些分散在各个业务逻辑中的代码 ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
随机推荐
- vector某元素是否存在、查找指定元素 、去重
vector.map 判断某元素是否存在.查找指定元素 [C++]判断元素是否在vector中,对vector去重,两个vector求交集.并集 PS:注意重载
- spring data jpa、Hibernate开启全球唯一UUID设置
spring data jpa.Hibernate开启全球唯一UUID设置 原文链接:https://www.cnblogs.com/blog5277/p/10662079.html 原文作者:博客园 ...
- CentOS7.4用yum安装并配置MySQL5.7
1.配置YUM源 下载MySQL源安装包 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 安装MySQ ...
- Springboot 中配置文件的优先级和加载顺序
1. 若application.yml 和bootStrap.yml 在同一目录下,则bootStrap.yml 的加载顺序要高于application.yml,即bootStrap.yml 会优先 ...
- Postman应用笔记
Postman应用: 项目组织格式 Collections 集合--项目--根路径文件夹 文件夹 集合下只支持1级文件夹 文件夹 Request --请求 url 认证参数,头信息,体信息(Autho ...
- git checkout branch
git fetch origin feature/banch1:feature/banch1 git checkout feature/banch1 git branch -u origin/feat ...
- Java核心技术卷一 · 笔记(1)
目录 1.java的关键术语 2.==和equals 3.空串与 Null 串 4.构建字符串 5.封装 6.对象的三个主要特性 7.依赖(dependence).聚合(aggregation).继承 ...
- JMETER-02
JMeter使用篇 1.界面介绍 2.JMeter-测试计划 测试计划:一个JMeter脚本只有一个测试计划,且测试计划必须启用状态 容易掉的坑:由于JMeter脚本中的每个元器件都可以单独禁用,上级 ...
- load data语句实验报告
1.创建和选择数据库 如果管理员在设置权限时为您创建数据库,则可以开始使用它.否则,您需要自己创建它: 创建数据库不会选择它来使用; 你必须明确地这样做.要创建menagerie当前数据库,请使用以下 ...
- Response.End ,Response.Redirect、Server.Transfer 引发 “正在中止线程”异常的问题
google后得知:Response.End 方法终止页的执行,并将此执行切换到应用程序的事件管线中的 Application_EndRequest 事件,同时抛出ThreadAbortExcepti ...