Day16-异常
异常机制
一.Error和Exception
1.什么是异常

2.异常体系结构

3.Error和Exception
Error

Exception

二.捕获和抛出异常
1.异常处理机制
抛出异常
捕获异常
异常处理五个关键字:
try,catch.finally,throw,throws
例1:捕获Exception
package exception;
public class Test {
public static void main(String[] args) {
int a=1;
int b=0;
try {//try监控区域
System.out.println(a/b);
}catch (ArithmeticException e){//catch捕获异常
System.out.println("程序出现异常,变量b不能为0");
}finally {//处理善后工作
System.out.println("finally");
}
//finally 可以不要finally。假设IO,资源,关闭
}
}
例2:捕获Error
package exception;
public class Test {
public static void main(String[] args) {
int a=1;
int b=0;
try {//try监控区域
new Test().a();
}catch (Error e){//这里用Throwable也可以//catch(想要捕获的异常类型)捕获异常
System.out.println("成功捕获Error");
}finally {//处理善后工作
System.out.println("finally");
}
//finally 可以不要finally。假设IO,资源,关闭
}
public void a(){
b();
}
public void b(){
a();
}
}
例3:假设捕获多个异常
package exception;
public class Test {
public static void main(String[] args) {
int a=1;
int b=0;
//假设捕获多个异常,从小到大
try {//try监控区域
System.out.println(a/b);
}catch (Error e){//这里用Throwable也可以//catch(想要捕获的异常类型)捕获异常
System.out.println("成功捕获Error");
}catch (Exception e){
System.out.println("成功捕获Exception");
}catch (Throwable e){
System.out.println("成功捕获Throwable");
} finally {//处理善后工作
System.out.println("finally");
}
//finally 可以不要finally。假设IO,资源,关闭
}
public void a(){
b();
}
public void b(){
a();
}
}
例4:主动抛出异常
package exception;
public class test2 {
public static void main(String[] args) {
try {
new test2().test(1,0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
//假设这方法中,吃力不了这个异常,方法上抛出异常
public void test(int a,int b)throws ArithmeticException{
if (b == 0) {// throw throws
throw new ArithmeticException();//主动抛出异常,一般在方法中使用
}
}
}
三.自定义异常

1.自定义异常类
package MyException;
//自定义的异常类
public class myexception extends Exception{
//传递数字>10
private int detail;
public myexception(int a) {
this.detail = a;
}
//to string:异常的打印信息
@Override
public String toString() {
return "myexception{" + "detail=" + detail + '}';
}
}
2.测试类
package MyException;
public class test {
//可能会存在异常的方法
static void test(int a) throws myexception {
System.out.println("传递的参数为:"+a);
if (a>10){
throw new myexception(a);//抛出
}
System.out.println("OK");
}
public static void main(String[] args) {
try {
test(11);
} catch (MyException.myexception e) {
System.out.println("my exception-->"+e);
}
}
}
//运行结果
//传递的参数为:11
//my exception-->myexception{detail=11}
实际应用中的经验总结

Day16-异常的更多相关文章
- Day16异常1
package com.exception.demo01;public class demo01 { public static void main(String[] args) { try{new ...
- 基本数据类型 异常 数组排序 JVM区域划分
Day01 1.基本数据类型各占几个字节 Byte 1 short2 int4 long8 float4 double6 char2 boolean1 Byte b1=3,b2= ...
- SSM-SpringMVC-24:SpringMVC异常高级之自定义异常
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 自定义异常,大家都会,对吧,无非就是继承异常类等操作,很简单,我就不多扯皮了,但是在xml配置文件中有个不同的 ...
- python学习-Day16
目录 今日内容详细 内置函数补充 常见内置函数 help() id() int() isinstance() pow() round() sum() 求和 迭代器 可迭代对象 什么是可迭代对象? 哪些 ...
- day16 异常处理生成器
day16 异常处理生成器 今日内容概要 异常处理 异常处理实战应用 生成器对象 生成器对象实现range方法 生成器表达式 今日内容详细 一.异常处理 1.异常常见类型 SyntaxError语法错 ...
- alias导致virtualenv异常的分析和解法
title: alias导致virtualenv异常的分析和解法 toc: true comments: true date: 2016-06-27 23:40:56 tags: [OS X, ZSH ...
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”
在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...
- 记一次tomcat线程创建异常调优:unable to create new native thread
测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...
- 使用JSONObject.fromObject的时候出现“There is a cycle in the hierarchy”异常 的解决办法
在使用JSONObject.fromObject的时候,出现“There is a cycle in the hierarchy”异常. 意思是出现了死循环,也就是Model之间有循环包含关系: ...
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论
异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#signalR 后台创建了一个DntHub的集线器 前台在调用的时候出现了问题(经检查是代理对象 ...
随机推荐
- idea的操作快捷键
IDEA调试快捷键 F8 跳到下一步 相当于eclipse的F6 F7 进入到方法 相当于eclipse 的F7 F9 恢复程序到下一个断点 相当于eclispe的 进入下一个断点 shift+F8 ...
- Babel与webpack
一.基础认知1 babel是js编译器,将新版本js代码转换成大多数浏览器支持的es5,es3代码 浏览器其实也不认识require函数,bable配合webpack解决模块的问题: 主要编译的是语法 ...
- 查看process状态
1.查看进程Uid.Gid bash-4.4# cat /proc/1/status | grep Uid Uid: 0 0 0 0 bash-4.4# cat /proc/1/status | gr ...
- linux 动态库、静态库
库:可执行的二进制代码,不可以独立执行(没有main函数入口) 库是否兼容:取决于编译器.汇编器.链接器 linux链接静态库(.a):将库中用到的函数的代码指令,写入到可执行文件中.运行时无依赖 l ...
- C# 在GridView里面使用a标签下载文件(图片)
不能使用ajax进行下载文件的操作,具体原因需百度 前端页面,在GridView里面使用模板列,模板列放a标签 <cimesui:cimesGridView ID="GridView1 ...
- Debian 迁移到新硬盘
老硬盘 A,新硬盘 B,先把B分好区,做好格式化. 准备虚拟机一台,Linux LiveCD光盘或者可用的Linux虚拟机系统,把硬盘A B 映射成虚拟机可以使用的硬盘文件,根据LiveCD新建相应的 ...
- centons7.2 双网口聚合功能配置和验证
1.启动网络管理器运行systemctl restart NetworkManager2.创建主备绑定连接 nmcli connection add con-name bond0 type bond ...
- clickhouse不喜欢sql末尾分号
今天用python连clickhouse查数据,sql语句末尾加了分号,始终报错 Code: 62, e.displayText() = DB::Exception: Syntax error 删掉分 ...
- mysql 删除商品名字重复数据,同时保留最新一条
delete goods where goods_id in (SELECT goods_id FROM goodswhere goods_name in (select goods_name fro ...
- SPI接口(续三)
在SPI接口中,判断传输的数据位上电平的高低是通过时钟来衡量的,根据时钟的上升沿/下降沿和数据电平的保持/更改,可以组合出4种方式,具体如下图所示. 从上图中可以看出,时钟相位CPHA决定传输的数据电 ...