Java(五)

异常

一.行为的意外结果可以分为两类
可以处理的意外结果称为异常(Exception)
处理不了的意外结果称为错误(Error)

异常是一中特殊的对象,类型为java.lang.Exception或器子类

二.处理
1.捕获异常
try-->执行可能产生异常的代码
catch-->捕获异常
finally-->无论是否发生异常,代码总能执行
2.声明异常
throws-->声明方法可能要抛出的各种异常
3.抛出异常
throw-->手动抛出异常

三.try-catch
情况一:
try(无异常) catch try-catch后代码
| |
---------------------------

情况二:
try(有异常) catch ---->try-catch后代码
| |
-->产生异常对象-->异常类型匹配-->

情况三:
try(有异常) catch ---->try-catch后代码
|
--产生异常对象-->异常类型不匹配-->代码中断

四.在catch块中处理异常
1.加入自定义处理信息
System.err.ptintln(“自定义内容”)
2.调用方法输出异常信息
e.printStackTrace();
3.异常对象常用方法
String getMessage();
*返回异常信息描述字符串是printStackTrace()输出信息一部分

五.Java异常机制
1.代码运行到可能出现异常时,由程序或Java抛出异常对象,异常对象会记录相关信息
2.异常对象抛出后,会去寻找异常处理的相关代码(catch),如果找到异常结束
3.如果未找到,异常对象会继续上抛,寻找异常处理代码
4.如果到main还未找异常抛给到异常处理代码,就会有main将异常抛给虚拟机
5.异常抛出的每一层代码都会中断

六.常见异常类型

异常类型 说明
Exception 异常层次结构的父类
ArithmeticException 算术错误情形,如以0做除数
ArrayIndexOutBoundsException 数组下标越界
NullPointerException 尝试访问null对象成员
ClassNotFoundException 不能加载所需类
IllegalArgumentException 方法接收到非法参数
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式化转换异常,如把“ABC”转为数字

七.finally
1.是否发生异常都会执行finally块中的代码
2.唯一不执行的情况:System.exit(1);

八.存在return的try-catch-finally块
try--->产生异常对象--->异常类型匹配--->进入catch--->

执行finally--->执行return退出方法

九.try、catch、finally使用规则
try{
//必须出现,且只能出现一次
}catch{
//可以出现0~n次,如果没有catch就必须有finally
}finally{
//可以出现0~1次
}

十.多重catch块
1.排列catch语句顺序:先子类后父类
2.发生异常时按顺序逐个匹配
3.只执行第一个与异常类型匹配的catch语句

十一.Java异常分类
1.运行时异常:在代码编译的时候不会进行检测,在代码运行时的过程中产生异常,

RuntimeException及其子类都属于运行时异常,
还有ArithmeticException、NullPointeException、NumberFormatException
2.检查异常/检测异常:在代码编译的时候显示必须处理,才能通过编译器的编译,

如:SQLException、ClassNoFoundException

十二.throw、throws
1.throws声明某个方法可能抛出的各种异常
2.throws可以让检查异常通过编译器的编译,但没有真正解决异常
3.throw手动抛出异常,并可以定义异常的信息
4.throws可以声明多个异常,多个异常之间用逗号隔开

十三.自定义异常
1.写一个异常类,继承Exception
2.手动实现Exception的构造方法

时间: 2024-10-15 09:29:59

Java(五)的相关文章

Java(五、类和对象中的例题)

一.方法中的参数为数值型的(int) import java.util.Scanner; public class ScoreCalc { public void calc(int num1,int num2,int num3){ int sum = num1 + num2 +num3; double avg = sum / 3; System.out.println("总成绩:"+sum); System.out.println("平均分:"+avg); } pu

Java(五)

♥作业1: 显示指定路径所有文件及实现文件筛选.智能监控,程序能自动在下拉菜单生成任意路径下文件所有尾缀.  代码内注释内容为步骤与整体思路  1 import java.awt.BorderLayout; 2 import java.awt.Color; 3 import java.awt.Font; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.io.Fil

[转]Java五个最常用的集合类之间的区别和联系

常用的集合类有一下几种: List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类:HashMap类,Hashtable类 Set结构的集合类:HashSet类,TreeSet类 Queue结构的集合:Queue接口 HashMap和Hashtable的区别: HashMap和Hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点 以下是他们的区别: 1.历史原因: Hashtable是基于陈旧的Dicti

Java五种基本的Annotation,提高程序的可读性

从JDK5开始,Java增加了对元数据的支持,也就是Annotation(即注解也被翻译为注释). 这里的Annotation和普通的注释有一定的区别,它是代码中的特殊标记,这些标记可以在编译.类加载或者运行时被读取,并执行相应的处理.通过这样的注解,可以帮助开发人员在不改变原有的逻辑的情况下,在源文件中补充一些信息.而代码分析工具.开发工具和部署工具可以通过这些补充信息进行验证或者进行部署. Annotation可以用来为程序元素(类.方法.成员变量等)设置元数据,值得一提的是,它不会影响代码

巩固java(五)----通过实例理解java多态

package duotai; class A{ public String show(){ return "A"; } } class B extends A{ public String show(){ return "B"; } public String onlyB(){ return "onlyB"; } } class C extends B{ public String show(){ return "C"; }

JAVA五周作业

代码如下 我从C盘中扫描指定位置的文件再将其显示到界面并添加了下拉菜单和列表框运行效果

Think in Java(五):多态

1. 动态绑定 又称"后期绑定"或"运行时绑定",它的含义就是在运行时判断对象的类型,从而调用恰当的方法 public class Shapes { private static RandomShapeGenerator gen = new RandomShapeGenerator(); public static void main(String[] args) { Shape[] shapeArr = new Shape[9]; // 填充数组 for (int

java 五十条数据分为一组

public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for(int i=0;i<70;i++){ list.add(i); } int toIndex = 50; for (int i = 0; i < list.size(); i+=50) { if (i+50>list.size()) { toIndex = list.size() - i; } Li

【学习笔记】Java中生成对象的5中方法

概述:本文介绍以下java五种创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.使用Class类的newInstance方法 3.运用反射手段,调用java.lang.reflect.Constructor类的newInstance()实例方法. 4.调用对象的clone()方法. 5.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法. 一.使用new关键字 这是最常见也是最简单的创建对象的方式了.通过这种方式

Java IO 之File操作

一.File中的两个常量分隔符 package File; import java.io.File; /** * 两个常量 * 1.路径分隔符 ; * 2.名称分隔符 \ (windows) /(linux等) */ @SuppressWarnings("all") public class Demo01 { public static void main(String[] args) { System.out.println(File.pathSeparator); System.o