JavaSE学习总结(八)—— 异常处理(Exception)
一、理解异常及异常处理的概念
异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。
异常不是错误
程序中关键的位置有异常处理,提高程序的稳定性
二、掌握Java异常处理机制
Java的异常处理是通过5个关键字来实现的
try:尝试,把有可能发生错误的代码放在其中,必须有
catch:捕获,当发生异常时执行
finally:最终,不管是否有异常都将执行
throw:抛出,引发异常
throws:抛出多个,声明方法将产生某些异常
三、掌握try 、catch 、 finally 处理异常
3.1、try..catch
package com.zhangguo.chapter6.d1; import java.util.Scanner; public class Exception1 { public static void main(String[] args) { Scanner input=new Scanner(System.in);
//int i=input.nextInt();
int i=Integer.parseInt(input.next());
System.out.println("您输入的是:"+i);
System.out.println("程序结束了");
} }
异常处理:
package com.zhangguo.chapter6.d1; import java.util.Scanner; public class Exception1 { public static void main(String[] args) { try {
Scanner input = new Scanner(System.in);
int i = Integer.parseInt(input.next());
System.out.println("您输入的是:" + i);
} catch (Exception exp) {
System.out.println("发生异常了:" + exp.getMessage());
}
System.out.println("程序结束了");
} }
结果:
3.2、try..catch..finally
finally在任何情况下都将执行,正常时会执行,不正常也会执行
package com.zhangguo.chapter6.d1; import java.util.Scanner; public class Exception1 { public static void main(String[] args) { try {
Scanner input = new Scanner(System.in);
int i = Integer.parseInt(input.next());
System.out.println("您输入的是:" + i);
} catch (Exception exp) {
System.out.println("发生异常了:" + exp.getMessage());
}finally {
System.out.println("输入结束");
}
System.out.println("程序结束了");
} }
结果:
1
您输入的是:1
输入结束
程序结束了
如果用户输入是的xyz
四、掌握throw 抛出异常、throws 声明异常
4.1、java中常用的异常
//算术异常
ArithmeticExecption //空指针异常类
NullPointerException //类型强制转换异常
ClassCastException //数组负下标异常
NegativeArrayException //数组下标越界异常
ArrayIndexOutOfBoundsException //违背安全原则异常
SecturityException //文件已结束异常
EOFException //文件未找到异常
FileNotFoundException //字符串转换为数字异常
NumberFormatException //操作数据库异常
SQLException //输入输出异常
IOException //方法未找到异常
NoSuchMethodException //抽象方法错误,当应用试图调用抽象方法时抛出
java.lang.AbstractMethodError //断言错误,用来指示一个断言失败的情况
java.lang.AssertionError //类循环依赖错误,若检测到类之间循环依赖则抛出该异常
java.lang.ClassCircularityError //类格式错误
java.lang.ClassFormatError //错误基类,标识严重程序运行问题,不应被应用程序捕获的反常情况
java.lang.Error //非法访问错误,违反域或方法的可见性声明
java.lang.IllegalAccessError //不兼容的类变化错误,当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常
java.lang.IncompatibleClassChangeError //实例化错误,构造一个抽象类或者接口时抛出该异常
java.lang.InstantiationError //内部错误
java.lang.InternalError //链接错误
java.lang.LinkageError //未找到类定义错误,找不到该类的定义时抛出该错误
java.lang.NoClassDefFoundError //域(成员变量,字段)不存在错误
java.lang.NoSuchFieldError //方法不存在错误
java.lang.NoSuchMethodError //内存不足错误
java.lang.OutOfMemoryError //堆栈溢出错误,如递归调用的层次太深
java.lang.StackOverflowError //线程已结束
java.lang.ThreadDeath //未知错误
java.lang.UnknownError //未满足的链接错误
java.lang.UnsatisfiedLinkError //不支持的类版本错误
java.lang.UnsupportedClassVersionError //验证错误
java.lang.VerifyError //虚拟机错误
java.lang.VirtualMachineError //算术条件异常,如整数除零
java.lang.ArithmeticException //数组索引越界异常
java.lang.ArrayIndexOutOfBoundsException //数组存储异常,存放非数组声明类型
java.lang.ArrayStoreException //类型转换异常
java.lang.ClassCastException //找不到类异常
java.lang.ClassNotFoundException //克隆不支持异常,如没有实现Cloneable接口
java.lang.CloneNotSupportedException //枚举常量不存在异常
java.lang.EnumConstantNotPresentException //根异常
java.lang.Exception //非法访问异常
java.lang.IllegalAccessException //非法的监控状态异常
java.lang.IllegalMonitorStateException //非法的状态异常
java.lang.IllegalStateException //非法的线程状态异常
java.lang.IllegalThreadStateException //索引越界异常
java.lang.IndexOutOfBoundsException //实例化异常
java.lang.InstantiationException //被中断异常
java.lang.InterruptedException //数组大小为负值异常
java.lang.NegativeArraySizeException //属性不存在异常,当访问某个类的不存在的属性时抛出该异常
java.lang.NoSuchFieldException //方法不存在异常
java.lang.NoSuchMethodException //空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常
java.lang.NullPointerException //数字格式异常
java.lang.NumberFormatException //运行时异常
java.lang.RuntimeException //安全异常
java.lang.SecurityException //字符串索引越界异常
java.lang.StringIndexOutOfBoundsException //类型不存在异常
java.lang.TypeNotPresentException //不支持的方法异常
java.lang.UnsupportedOperationException //Jsp页面异常
javax.servlet.jsp.JspException //JSP引擎解析异常
org.apache.jasper.JasperException //Servlet异常
javax.servlet.ServletException //对象已被删除异常
org.hibernate.ObjectDeletedException
常用的异常
4.2、throw..throws
package com.zhangguo.chapter6.d1; public class Exception2 { public static void main(String[] args) { try {
System.out.println(div(30,3));
} catch (Exception e) {
//输出异常的堆栈信息
e.printStackTrace();
} try {
System.out.println(div(3,0));
} catch (Exception e) {
System.out.println(e.getMessage());
} } //throws 声明方法将可能抛出异常
public static int div(int n1,int n2) throws Exception{
if(n2==0){
//抛出异常
throw new Exception("除数不能为零");
}
return n1/n2;
} }
运行结果:
五、掌握自定义异常
public class ArithmeticException extends RuntimeException {
private static final long serialVersionUID = 2256477558314496007L; /**
* Constructs an {@code ArithmeticException} with no detail
* message.
*/
public ArithmeticException() {
super();
} /**
* Constructs an {@code ArithmeticException} with the specified
* detail message.
*
* @param s the detail message.
*/
public ArithmeticException(String s) {
super(s);
}
}
JavaSE学习总结(八)—— 异常处理(Exception)的更多相关文章
- python学习笔记(八):异常处理
一.异常处理 在程序运行过程中,总会遇到各种各样的错误.程序一出错就停止运行了,那我们不能让程序停止运行吧,这时候就需要捕捉异常了,通过捕捉到的异常,我们再去做对应的处理. 下面我们先写一个函数,实现 ...
- android 学习随笔八(异常处理总结)
1.在android 中开发java.net.SocketException: socket failed: EACCES (Permission denied) 报错 第一反应就是缺少网络权限,然后 ...
- 【学习】C++异常处理,exception
try.catch try { ... }中的语句按顺序执行,突然遇到错误了,则捕获,catch. try中语句执行到最后可以加一条语句,打印出,程序成功运行. catch(const .....e) ...
- JavaSE学习笔记(8)---常用类
JavaSE学习笔记(8)---常用类 1.Object类 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类 ...
- JavaSE学习笔记(6)---异常
JavaSE学习笔记(6)---异常 软件程序在运行过程中,非常可能遇到问题,我们称之为异常,英文是:Exception,意思是例外.遇到这些例外情况,或者叫异常,我们怎么让写的程序做出合理的处理 ...
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
- SpringBoot源码学习系列之异常处理自动配置
SpringBoot源码学习系列之异常处理自动配置 1.源码学习 先给个SpringBoot中的异常例子,假如访问一个错误链接,让其返回404页面 在浏览器访问: 而在其它的客户端软件,比如postm ...
- javaSE学习笔记(16)---网络编程
javaSE学习笔记(16)---网络编程 基本概念 如今,计算机已经成为人们学习.工作.生活必不可少的工具.我们利用计算机可以和亲朋好友网上聊天,也可以玩网游.发邮件等等,这些功能实现都离不开计算机 ...
- javaSE学习笔记(15) ---缓冲流、转换流、序列化流
javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...
- Java IO学习笔记八:Netty入门
作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...
随机推荐
- 广商博客冲刺第二天new
队名:雷锋队 队员:叶子鹏 王佳宁 张奇聪 张振演 曾柏树 项目:广商博客(嵌入APP) 执笔人:王佳宁 第一天沖刺傳送門 第三天沖刺傳送門 今天主要是写需求分析,在经过组员的热烈地讨论,需求分析如下 ...
- HDOJ2017_字符串统计
这是一道水题 HDOJ2017_字符串统计 #include<iostream> #include<string> #include<stdio.h> #inclu ...
- CSS 选择器继承和层叠
CSS选择器及其继承特性.层叠特性1.基本选择器 标记 id class 这个就不再作介绍了 2.复合选择器 交集 交集选择器由两个选择器直接连接构成,其结果是选中二者各自元素范围的交集 其 ...
- HADOOP实战
一.软件版本Centos6.5.VMware 10CDH5.2.0(Hadoop 2.5.0)Hive-0.13 sqoop-1.4.5 二.学完课程之后,您可以:①.一个人搞定企业Hadoop平台搭 ...
- 数据类型+内置方法 python学习第六天
元组 用途:不可变的列表,能存多个值,但多个值只有取的需求而没有改的需求. 定义方式:在()内用逗号分隔开多个元素,可以存放任意类型的值. names=(‘alex’,’blex’,’clex’) 强 ...
- rabbitmq使用报错总结
最近公司重构服务器架构,需要用到rabbitmq,在公司搞了一个下午还是连接不上,后来细看了英文说明,测试连接成功,得出如下报错几点. 我用的安装包:otp_win64_21.3.exe(erlang ...
- ACdream1187-Rational Number Tree-模拟/找规律
找到规律模拟就可以了,用DFS模拟很简洁,用循环模拟比较直观(大概吧) 注意输入输出用%llu,1ULL<<64=0!被这几个小问题卡了好久 #include <cstdio> ...
- 一个开启多个事务导致OptimisticLockException异常的问题
异常信息:org.eclipse.persistence.exceptions.OptimisticLockException 对象在其他的事物中被修改,而造成这一个问题的原因是:同时开启了两个事务, ...
- idea 项目打包发布
clean install -Dmaven.test.skip=true -pl 项目名(maven为准) -am -amd
- MT【237】阿基米德三角形的一些常见性质
阿基米德三角形的常见性质:抛物线:$x^2=2py,AB$为抛物线的弦,$AQ,BQ$为切线,记$Q(x_0,y_0)$则$1)k_{QA}*k_{QB}=\dfrac{p}{2x_0}$$2)k_{ ...